it-swarm-eu.dev

Wie kann ich Java-.class-Dateien auf eine für Menschen lesbare Weise öffnen?

Ich versuche herauszufinden, was die Klassendatei eines Java-Applets unter der Haube tut. Beim Öffnen mit Notepad oder Textpad wird nur ein paar Gobbledy-Gooks angezeigt.

Gibt es eine Möglichkeit, es wieder in ein etwas lesbares Format umzuwandeln, damit ich herausfinden kann, was es tut?

  • Umgebung == Windows mit VS 2008 installiert.
96
cpuguru

jd-gui ist momentan der beste Decompiler. Es kann mit neueren Funktionen in Java umgehen, verglichen mit dem immer staubigen JAD.

195
DarenW

Wenn Sie nichts dagegen haben, Bytecode zu lesen, sollte Javap gut funktionieren. Es ist Teil der Standardinstallation von 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

Wenn Sie einen Java-Decompiler benötigen, können Sie dazu das Befehlszeilentool javap verwenden. Java Decompiler HOW-TO beschreibt außerdem, wie Sie eine Klassendatei dekompilieren können.

7
Drew Frezell

Die Dekompilierung mit Jad ist wahrscheinlich die beste Option. Wenn der Code nicht verschleiert wurde, wird das Ergebnis in Ordnung sein.

2
Rasmus Faber

was Sie suchen, ist ein Java-De-Compiler. Ich empfehle JAD http://www.kpdus.com/jad.html Es ist kostenlos für nicht kommerzielle Zwecke und erledigt die Arbeit. 

Hinweis: Dadurch wird der Code nicht genau so erstellt, wie er geschrieben wurde. Das heißt, Sie werden Kommentare und möglicherweise Variablennamen verlieren, es wird also etwas schwieriger als das Lesen von normalem Quellcode. Wenn der Entwickler wirklich geheim ist, haben sie auch ihren Code verschleiert, was das Lesen noch schwieriger macht. 

2
David Beleznay

cpuguru, wenn Ihr Applet mit Javac 1.3 (oder weniger) kompiliert wurde, ist die beste Option die Verwendung von Jad.

Leider ist das letzte von JAD 1.5.8 (14. April 2001) unterstützte JDK JDK 1.3.

Wenn Ihr Applet mit einem neueren Compiler kompiliert wurde, können Sie JD-GUI versuchen: Dieser Decompiler befindet sich in der Entwicklung, generiert jedoch meistens korrekte Java-Quellen für Klassen, die mit den JDKs 1.4, 1.5 kompiliert wurden oder 1.6.

DarenW, danke für deinen Beitrag. JD-GUI ist noch nicht der beste Decompiler ... aber ich arbeite gerade an :)

2
Emmanuel Dupuy

Wenn die Klassendatei, die Sie untersuchen möchten, Open Source ist, sollten Sie sie nicht dekompilieren, sondern die Quelldateien direkt an Ihre IDE anhängen. Auf diese Weise können Sie den Code einer Bibliotheksklasse einfach so anzeigen, als wäre er Ihre eigene

1
arturh

Das ist kompilierter Code, Sie müssen einen Decompiler wie JAD verwenden: http://www.kpdus.com/jad.html

1
cynicalman

Sie müssen einen Decompiler verwenden. Andere haben JAD vorgeschlagen, es gibt andere Optionen, JAD ist die beste.

Ich werde die Kommentare wiederholen, die Sie im Vergleich zum ursprünglichen Quellcode ein wenig verlieren könnten. Es wird besonders lustig aussehen, wenn der Code aufgrund von Löschvorgängen Generics verwendet.

1
Zac Gochenour

Wie von @MichaelMyers ausgeführt, verwenden Sie 

javap -c <name of Java class file> 

um den JVM-Assembly-Code zu erhalten. Sie können die Ausgabe zur besseren Sichtbarkeit auch in eine Textdatei umleiten.

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= " ist die beste und benutzerfreundlichste Option zur Dekompilierung der .class-Datei ....

JAD und/oder JADclipse Eclipse Plugin natürlich.

1
John Gardner

sie können auch die verfügbaren Online-Java-Dekompilierer verwenden. Für z. http://www.javadecompilers.com

0
Prachi Sharma

Es ist nicht erforderlich, Applet.class zu dekompilieren. Der öffentliche Quellcode der Java-API-Klassen wird mit dem JDK geliefert (falls Sie sich für die Installation entscheiden) und ist besser lesbar als dekompilierter Bytecode. Sie finden komprimiert in src.Zip (in Ihrem JDK-Installationsordner).

0
Arno

Wie vorgeschlagen, können Sie es mit JAD dekompilieren und die Dateien anzeigen. Zur besseren Lesbarkeit können Sie das JADclipse-Plugin für Eclipse verwenden, um JAD direkt in Eclipse zu integrieren, oder den DJ Java Decompiler verwenden, der viel einfacher zu verwenden ist als die Befehlszeilen-JAD

0
amitwadhwa

JAD ist eine ausgezeichnete Option, wenn Sie als Ergebnis lesbaren Java-Code wünschen. Wenn Sie wirklich in die Interna des .class-Dateiformats graben wollen, sollten Sie javap. Es ist im Lieferumfang des JDK enthalten und ermöglicht es Ihnen, den hexadezimalen Bytecode in lesbaren ASCII-Code zu "dekompilieren". Die Sprache ist immer noch Bytecode (nicht alles wie Java), aber sie ist ziemlich lesbar und äußerst lehrreich.

Wenn Sie wirklich möchten, können Sie eine beliebige .class-Datei in einem Hex-Editor öffnen und den Bytecode direkt lesen. Das Ergebnis ist identisch mit der Verwendung von javap.

0
Daniel Spiewak

CFR - ein weiterer Java-Decompiler ist ein hervorragender Decompiler für modernes Java, das in Java 6 geschrieben wurde.

0
tidbeck