it-swarm-ru.tech

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

Я пытаюсь выяснить, что файл класса Java-апплета делает под капотом. Если открыть его с помощью «Блокнота» или «Блокнота», то это просто клевера.

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

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

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

195
DarenW

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

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

7
Drew Frezell

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

2
Rasmus Faber

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

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

2
David Beleznay

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.

DarenW, спасибо за ваш пост. JD-GUI еще не лучший декомпилятор ... но я работаю над ним :)

2
Emmanuel Dupuy

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

1
arturh

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

1
cynicalman

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

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

1
Zac Gochenour

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

javap -c <name of Java class file> 

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

javap -c <name of Java class file> > decompiled.txt
1
Nilashish C

jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.Zip&can=2&q= " - лучший и удобный вариант для декомпиляции .class файла ....

1
Karthikeyan Subramanian

Плагин JAD и/или JADclipse Eclipse, наверняка.

1
John Gardner

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

0
Prachi Sharma

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

0
Arno

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

0
amitwadhwa

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

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

0
Daniel Spiewak

CFR - еще один декомпилятор Java является отличным декомпилятором для современной Java, написанной на Java 6.

0
tidbeck