Ответ 1
jd-gui - лучший декомпилятор на данный момент. он может обрабатывать новые функции Java, по сравнению с пылевидным JAD.
Я пытаюсь понять, что делает класс Java-апплета, созданный под капотом. Открытие его с помощью Блокнота или Textpad просто показывает кучу gobbledy-gook.
Есть ли способ прервать его обратно в несколько читаемый формат, чтобы я мог понять, что он делает?
jd-gui - лучший декомпилятор на данный момент. он может обрабатывать новые функции Java, по сравнению с пылевидным JAD.
Если вы не против чтения байт-кода, javap должен работать нормально. Это часть стандартной установки JDK.
Usage: javap <options> <classes>...
where options include:
-c Disassemble the code
-classpath <pathlist> Specify where to find user class files
-extdirs <dirs> Override location of installed extensions
-help Print this usage message
-J<flag> Pass <flag> directly to the runtime system
-l Print line number and local variable tables
-public Show only public classes and members
-protected Show protected/public classes and members
-package Show package/protected/public classes
and members (default)
-private Show all classes and members
-s Print internal type signatures
-bootclasspath <pathlist> Override location of class files loaded
by the bootstrap class loader
-verbose Print stack size, number of locals and args for methods
If verifying, print reasons for failure
Вам нужен декомпилятор java, вы можете использовать инструмент командной строки javap
для этого. Кроме того, Java Decompiler HOW-TO описывает, как вы можете декомпилировать файл класса.
Использование Jad для декомпиляции это, вероятно, ваш лучший вариант. Если код не был запутан, он даст хороший результат.
то, что вы ищете, является компилятором java. Я рекомендую JAD http://www.kpdus.com/jad.html Он бесплатный для некоммерческого использования и выполняет свою работу.
Примечание: это не сделает код таким же, как и написанный. т.е. вы потеряете комментарии и, возможно, имена переменных, поэтому это будет немного сложнее, чем просто чтение нормального исходного кода. Если разработчик действительно скрыт, они тоже запутают свой код, что еще труднее будет прочитать.
cpuguru, если ваш апплет был скомпилирован с javac 1.3 (или меньше), ваш лучший вариант - использовать Jad.
К сожалению, последний JDK, поддерживаемый JAD 1.5.8 (14 апреля 2001 г.), - JDK 1.3.
Если ваш апплет был скомпилирован с использованием более позднего компилятора, вы можете попробовать JD-GUI: этот декомпилятор находится в разработке, тем не менее, он генерирует правильные источники Java, большую часть времени, для классов, скомпилированных с JDKs 1.4, 1.5 или 1.6.
Дарен, спасибо за сообщение. JD-GUI еще не лучший декомпилятор... но я работаю над:)
Этот скомпилированный код вам нужно будет использовать декомпилятор вроде JAD: http://www.kpdus.com/jad.html
Вам нужно использовать декомпилятор. Другие предложили JAD, есть другие варианты, JAD - лучший.
Я повторю комментарии, которые вы можете потерять по сравнению с исходным кодом. Это будет выглядеть особенно забавно, если код использовал дженерики, из-за стирания.
JAD и/или JADclipse Eclipse, конечно.
Если файл класса, который вы хотите просмотреть, является открытым исходным кодом, вы не должны декомпилировать его, а вместо этого присоединяете исходные файлы непосредственно в свою среду IDE. Таким образом, вы можете просто просмотреть код некоторого класса библиотеки, как будто это ваш собственный
jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=" - лучший и удобный для декомпиляции файл .class....
Как было предложено, вы можете использовать JAD для декомпиляции и просмотра файлов. Чтобы упростить чтение, вы можете использовать плагин JADclipse для eclipse для интеграции JAD непосредственно в eclipse или использовать DJ Java Decompiler, который намного проще в использовании, чем в командной строке JAD
JAD - отличный вариант, если вы хотите получить читаемый код Java. Если вы действительно хотите выкопать внутренности формата .class
, но вам захочется javap
. Он связан с JDK и позволяет "декомпилировать" шестнадцатеричный байт-код в читаемом ASCII. Язык, который он создает, по-прежнему является байт-кодом (не что-то вроде Java), но он довольно читабельным и чрезвычайно поучительным.
Кроме того, если вы действительно этого хотите, вы можете открыть любой файл .class
в шестнадцатеричном редакторе и напрямую прочитать байт-код. Результат идентичен использованию javap
.
Нет необходимости декомпилировать Applet.class. Открытый исходный код классов API Java API поставляется с JDK (если вы решите его установить) и лучше читается, чем декомпилированный байт-код. Вы можете найти сжатый файл src.zip(расположенный в папке установки JDK).
CFR - еще один декомпилятор java - отличный декомпилятор для современной Java, написанной на Java 6.
Как отмечает @MichaelMyers, используйте
javap -c <name of java class file>
чтобы получить код сборки JVM. Вы также можете перенаправить вывод в текстовый файл для лучшей видимости.
javap -c <name of java class file> > decompiled.txt
Вы также можете использовать доступные онлайн декомпиляторы Java. Например, http://www.javadecompilers.com
Вам нужен декомпилятор. www.Decompiler.com - хороший онлайн-декомпилятор.