Декомпиляция .jar файла
Доброго времени суток.
После декомпиляции исполняемого jar-файла в каталоге не хватает файлов исходного кода. Пользовался fernflower, распаковка архива и последующая декомпиляция тоже ничего не дала. Кто-нибудь может помочь?
Сам файл прикреплен.
Вложения
wega0.2s.zip (178.2 Кб, 13 просмотров) |
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Декомпиляция .class файла
После декомпиляции .class файла и повторной компиляции приложение в котором используется это класс.
Запуск .Jar файла
добрый день программисты создал проект который заносит, считывает, удаляет данные из SQL. Когда.
Запуск jar-файла
Скажите плииз, почему напрочь не выполняется класс из jar-файла. Вот, собственно содержание.
Запуск jar файла
Здравствуйте. Кто-нибудь может подсказать, что делать, если при попытке запуска jar файла (как.
Почетный модератор
28044 / 15777 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
кто тебе сказал что там будут исходники?
Регистрация: 15.12.2014
Сообщений: 7
А что после декомпиляции еще может быть? Обычные java-файлы.
В архивах файлы до и после декомпиляции.
Вложения
wega0.2s.zip (195.6 Кб, 3 просмотров) |
wega0.2s_d.zip (20.7 Кб, 6 просмотров) |
4090 / 3824 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
shamless, Всё таки получилось декомпилировать? Что использовали?
Регистрация: 15.12.2014
Сообщений: 7
Пользовался fernflower. Информацию брал отсюда
Как запустить декомпилятор Fernflower?
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Создание jar файла
Есть класс, использующий внешние библиотеки. Он компилируется и запускается, но у меня не.
Выполнение jar-файла
При выполнении jar-файла все данные выводит в файл в одну строку, а при выполнении в Intelij Idea.
Создание jar файла
Как создать jar файл в intelij IDEA 14.0.3? Гуглить пробовал,поиском по форуму также пользовался.
Чтение файла из jar
Подскажите пожалуйста как правильно читать файл из jar(что-то вроде дефолтных настроек) сейчас.
Как декомпилировать class в java
Декомпиляция (от англ. «decompile» — разбор на составляющие) — это процесс восстановления исходного кода из скомпилированного кода.
В Java для декомпиляции .class файлов можно использовать различные инструменты, например:
- JD-GUI — это бесплатный графический интерфейс для декомпиляции .class файлов. Он доступен для Windows , macOS и Linux . Просто откройте .class файл в JD-GUI и вы получите доступ к исходному коду.
- Procyon — это бесплатный декомпилятор, написанный на Java . Он может декомпилировать .class файлы и файлы JAR . Вы можете использовать его из командной строки или как библиотеку в своем проекте.
- Fernflower — это другой бесплатный декомпилятор, написанный на Java . Он может декомпилировать .class файлы и файлы JAR , а также декомпилировать классы, которые были зашифрованы с помощью обфускатора.
Пример декомпиляции .class файла с помощью JD-GUI :
- Скачайте и установите JD-GUI с официального сайта
- Запустите JD-GUI и откройте .class файл, щелкнув на кнопке «Open File» в верхнем левом углу.
- Выберите .class файл, который вы хотите декомпилировать.
- JD-GUI покажет вам исходный код класса в окне редактора.
Важно отметить, что декомпиляция кода может быть незаконной в некоторых случаях, особенно если это нарушает авторские права. Поэтому, если вы не являетесь владельцем исходного кода, обязательно получите разрешение на декомпиляцию.
Декомпиляция Java приложений
Недавно я задался вопросом: Какой декомпилятор лучше?
Начал мучить Google, экспериментировать. В итоге нашел отличное решение. Как декомпильнуть любую программу и получить рабочие «исходники»? Об этом в сабже.
Краткий обзор популярных декомпиляторов
Mocha
Mocha (автор — Hanpeter van Vliet)— это, вероятно, один из первых выпущенных декомпиляторов Java. Предоставляет консольный пользовательский интерфейс. Его релиз состоялся в 1996-ом году, ещё до того, как появился Java Development Kit версии 1.1
JAva Decompiler
JAva Decompiler, JAD (автор — Pavel Kouznetsov) — по всей видимости, самый
популярный декомпилятор Java. Как и Mocha, этот декомпилятор предоставляет консольный интерфейс, давно не обновляется и не поддерживается, но большое число графических инструментов для работы с ним, в том числе плагин JadClipse для среды разработки Eclipse, делают его и по сей день используемым в качестве подручного средства для декомпиляции небольших классов.
Помимо декомпиляции, JAva Decompiler обладает возможностью дизассемблирования .class-файлов.
DJ Java Decompiler
DJ Java Decompiler (автор — Atanas Neshkov) — долгое время вопреки названию являлся лишь графической оболочкой для предыдущего декомпилятора, позволявшей легко и удобно выбрать аргументы командной строки для вызова JAD. В текущей версии добавлена поддержка аннотаций, но декомпилятор стал условно-бесплатным (необходима покупка после 10 пробных использований).
JD-Core
- Полностью написана на языке C++, что делает декомпиляцию необычайно быстрой
- Не требует для работы Java Runtime Environment и поэтому не требует специальной установки
- Корректно декомпилирует .class-файлы, сгенерированные большинством компиляторов
Fernflower
- Параметрические типы
- Аннотации
- Перечислимые типы
- Утверждения
Мой выбор
- JD-GUI — для просмотра, не более
- Fernflower — полное восстановление
Fernflower будет развиваться в сторону деобфускатора
…
Специальных функций деобфускации Fernflower сейчас не содержит, они будут подключаться в дальнейшем отдельными модулями
Т.к. онлайн версия по неизвестным причинам не работает, а про оффлайн трудно что-либо сказать(кроме того, что качество декомпиляции отменное), не о каких модулях на данный момент речи быть не может.
Не хватает еще модуля переименования
Это да. Поищем что-то такое в интернетах.
На выручку придет Proguard, но необыкновенный
ProGuardDeobfuscator — небольшая модификация программы ProGuard, превращающая ее в квази-деобфускатор. В процессе обработки короткие обфусцированные имена пакетов, классов, полей и методов заменяются на более осмысленные и уникальные в пределах Jar файла.
Скачать исходники и сам деобфускатор: projectd8.org/Programs/Java/PGD
Инструменты все есть, но лично я, для облегчения воссоздания сорцов использую так же любимую Netbeans IDE — очень сильно помогает своими подсказками, особенно когда классов много.
Спасибо за внимание!
Ссылки
UPD:
Извиняюсь, в offline версии Fernflower присутствует модуль переименований и уйма других штук — Readme
Как декомпилировать jar
Сегодня мы с вами научимся декомпилировать и собирать(компилировать обратно) привычные для нас ядра различных сборок.
Много криков слышится о том что без исходных кодов работать с компилированным ядром ява сервера — не возможно. Это абсолютно не верная информация и абсолютно не правильная.
Сегодня, мы с вами ознакомимся с 1 из методов работы с подобным видом продуктов.
Что нам понадобится?
- Естественно, любой свободный декомпилятор Java среды.
Итак, для начала — выбираем нашу любимую жертву, над которой будем усердно работать.
Не знаю, для какой цели вам нужен кусок исходных кодов — но дело ваше. Для эксперемента, жертвой были выбран скомпилированный код команды l2jfozen, чтоб обидно не было никому.
Первым нашим шагом будет декомпиляция собственно нужного нам класса.
Много ума здесь совсем не нужно. Поэтому — задействуем ранее скачанный декомпилятор(я буду вести пример на основе jd gui decompiller).
Открываем jar архив с нужным нам классом:
Декомпилируем нужный нам класс в исходные коды (java):
Теперь, настал момент истины и их нужно обратно собрать.
Делать мы это будем ровно в 1 клик. Для сбора мы создадим папочку: D:\compile\, в которую поместим декомпилированный нами ранее класс (скрин №2) и сам .jar архив который мы декомпилировали.
Теперь — осталось не много не мало — скомпилировать наш класс. Для этого, мы используем консоль нашей OS (у виндузятников — cmd, линупсоиды — думаю подсказывать не нужно где консоль).
Для начала, проверим — доступен ли нам компилятор (javac) в исконном виде. Введем в консоль:
Если после введения команды нам высветило большой манаул — все в порядке. Если же результатом исполнения стало:
«javac» не является внутренней или внешней командой
то беда пришла за нами. Дело — копеечное, решается ровно в 4 клика.
Если возникло двигаем: Мой компьюетр->свойства->дополнительно->переменные среды и ищем там переменную «Path». Выбираем — редактирование, и дописываем путь к бинарникам нашей Jdk (/путь до jdk/bin), к примеру это будет выглядеть так:
и добавляем (через ; к переменной). Сохраняем, и открываем консоль снова. Если при исполнении javac все в порядке — воуля, проблема устранена.
Теперь — непосредственно компилируем ранее декомпилированный нами класс.
Заходим туда, где лежит наш класс:
Компилируем сам класс:
D:\compile>javac -classpath l2jfrozen-core.jar -Xlint:unchecked Имя_декомпилированного_класса.java
как пример — компиляция Config.java:
D:\compile>javac -classpath l2jfrozen-core .jar -Xlint:unchecked GameServer.java
Что ж, на выходе (в той же папке) мы получили: наш_класс.class. Дело сделано, все довольны.
Осталось — мелочи. Открываем декомплируемое нами ядро (l2jfrozen-core.jar) простым архиватором (winzip, winrar, 7z) и доходим до уровня, где лежит старый класс. Удаляем старый класс, жмем «ADD» и запихиваем сюда класс, который мы скомпилировали выше.
Вот собственно и все, мы проделали операцию нужную вам. После декомпилирования класса вы можете внести свои поправки в исходный код и успешно скомпилировать его и всунуть куда нужно.
Автор: zenn, © 2010 by l2server.org special.