Как я могу открывать файлы Java.class с точки зрения человека?

Я пытаюсь понять, что делает класс Java-апплета, созданный под капотом. Открытие его с помощью Блокнота или Textpad просто показывает кучу gobbledy-gook.

Есть ли способ прервать его обратно в несколько читаемый формат, чтобы я мог понять, что он делает?

  • Среда == Windows w/VS 2008 установлена.

Ответ 1

jd-gui - лучший декомпилятор на данный момент. он может обрабатывать новые функции Java, по сравнению с пылевидным JAD.

Ответ 2

Если вы не против чтения байт-кода, 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

Ответ 3

Вам нужен декомпилятор java, вы можете использовать инструмент командной строки javap для этого. Кроме того, Java Decompiler HOW-TO описывает, как вы можете декомпилировать файл класса.

Ответ 4

Использование Jad для декомпиляции это, вероятно, ваш лучший вариант. Если код не был запутан, он даст хороший результат.

Ответ 5

то, что вы ищете, является компилятором java. Я рекомендую JAD http://www.kpdus.com/jad.html Он бесплатный для некоммерческого использования и выполняет свою работу.

Примечание: это не сделает код таким же, как и написанный. т.е. вы потеряете комментарии и, возможно, имена переменных, поэтому это будет немного сложнее, чем просто чтение нормального исходного кода. Если разработчик действительно скрыт, они тоже запутают свой код, что еще труднее будет прочитать.

Ответ 6

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 еще не лучший декомпилятор... но я работаю над:)

Ответ 7

Этот скомпилированный код вам нужно будет использовать декомпилятор вроде JAD: http://www.kpdus.com/jad.html

Ответ 8

Вам нужно использовать декомпилятор. Другие предложили JAD, есть другие варианты, JAD - лучший.

Я повторю комментарии, которые вы можете потерять по сравнению с исходным кодом. Это будет выглядеть особенно забавно, если код использовал дженерики, из-за стирания.

Ответ 9

JAD и/или JADclipse Eclipse, конечно.

Ответ 10

Если файл класса, который вы хотите просмотреть, является открытым исходным кодом, вы не должны декомпилировать его, а вместо этого присоединяете исходные файлы непосредственно в свою среду IDE. Таким образом, вы можете просто просмотреть код некоторого класса библиотеки, как будто это ваш собственный

Ответ 12

Как было предложено, вы можете использовать JAD для декомпиляции и просмотра файлов. Чтобы упростить чтение, вы можете использовать плагин JADclipse для eclipse для интеграции JAD непосредственно в eclipse или использовать DJ Java Decompiler, который намного проще в использовании, чем в командной строке JAD

Ответ 13

JAD - отличный вариант, если вы хотите получить читаемый код Java. Если вы действительно хотите выкопать внутренности формата .class, но вам захочется javap. Он связан с JDK и позволяет "декомпилировать" шестнадцатеричный байт-код в читаемом ASCII. Язык, который он создает, по-прежнему является байт-кодом (не что-то вроде Java), но он довольно читабельным и чрезвычайно поучительным.

Кроме того, если вы действительно этого хотите, вы можете открыть любой файл .class в шестнадцатеричном редакторе и напрямую прочитать байт-код. Результат идентичен использованию javap.

Ответ 14

Нет необходимости декомпилировать Applet.class. Открытый исходный код классов API Java API поставляется с JDK (если вы решите его установить) и лучше читается, чем декомпилированный байт-код. Вы можете найти сжатый файл src.zip(расположенный в папке установки JDK).

Ответ 16

Как отмечает @MichaelMyers, используйте

javap -c <name of java class file> 

чтобы получить код сборки JVM. Вы также можете перенаправить вывод в текстовый файл для лучшей видимости.

javap -c <name of java class file> > decompiled.txt

Ответ 17

Вы также можете использовать доступные онлайн декомпиляторы Java. Например, http://www.javadecompilers.com

Ответ 18

Вам нужен декомпилятор. www.Decompiler.com - хороший онлайн-декомпилятор.