Ich versuche herauszufinden, was die Klassendatei eines Java-Applets unter der Haube tut. Wenn Sie es mit Notepad oder Textpad öffnen, wird nur ein Haufen Gobbledy-Gook angezeigt.
Gibt es eine Möglichkeit, es wieder in ein etwas lesbares Format zu bringen, damit ich versuchen kann, herauszufinden, was es tut?
- Umgebung == Windows mit VS 2008 installiert.
Antworten:
jd-gui ist momentan der beste Dekompiler. Es kann neuere Funktionen in Java verarbeiten, verglichen mit dem immer staubigen JAD.
quelle
Wenn es Ihnen nichts ausmacht, Bytecode zu lesen, sollte Javap einwandfrei funktionieren. Es ist Teil der Standard-JDK-Installation.
quelle
Verwenden Sie, wie von @MichaelMyers hervorgehoben
um den JVM-Assemblycode abzurufen. Sie können die Ausgabe zur besseren Sichtbarkeit auch in eine Textdatei umleiten.
quelle
Wenn Sie einen Java-Dekompiler
javap
benötigen , können Sie dazu das Befehlszeilentool verwenden . Außerdem beschreibt Java Decompiler HOW-TO , wie Sie eine Klassendatei dekompilieren können.quelle
Was Sie suchen, ist ein Java-De-Compiler. Ich empfehle JAD http://www.kpdus.com/jad.html. Es ist kostenlos für nichtkommerzielle Zwecke und erledigt die Arbeit.
Hinweis: Dadurch wird der Code nicht exakt mit dem geschrieben, was geschrieben wurde. Das heißt, Sie verlieren Kommentare und möglicherweise Variablennamen, sodass es etwas schwieriger wird, als nur normalen Quellcode zu lesen. Wenn der Entwickler wirklich geheim ist, hat er auch seinen Code verschleiert, was das Lesen noch schwieriger macht.
quelle
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 ausprobieren : Dieser Dekompiler befindet sich in der Entwicklung, generiert jedoch meistens korrekte Java-Quellen für Klassen, die mit den JDKs 1.4, 1.5 oder 1.6 kompiliert wurden.
DarenW, danke für deinen Beitrag. JD-GUI ist noch nicht der beste Dekompiler ... aber ich arbeite daran :)
quelle
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 zum Dekompilieren von .class Datei....
quelle
Die Dekompilierung mit Jad ist wahrscheinlich die beste Option. Wenn der Code nicht verschleiert wurde, wird ein gutes Ergebnis erzielt.
quelle
Das ist kompilierter Code. Sie müssen einen Dekompiler wie JAD verwenden: http://www.kpdus.com/jad.html
quelle
Sie müssen einen Dekompiler verwenden. Andere haben JAD vorgeschlagen, es gibt andere Möglichkeiten, JAD ist die beste.
Ich werde die Kommentare wiederholen, die Sie im Vergleich zum ursprünglichen Quellcode möglicherweise etwas verlieren. Es wird besonders lustig aussehen, wenn der Code aufgrund der Löschung Generika verwendet.
quelle
Natürlich das JAD- und / oder JADclipse Eclipse-Plugin.
quelle
Wenn die Klassendatei, in die Sie schauen 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 es Ihr eigener
quelle
Wie vorgeschlagen können Sie JAD verwenden, um es zu dekompilieren und die Dateien anzuzeigen. Um das Lesen zu vereinfachen, 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 Befehlszeilen-JAD
quelle
JAD ist eine hervorragende Option, wenn Sie als Ergebnis lesbaren Java-Code wünschen. Wenn Sie sich jedoch wirklich mit den Interna des
.class
Dateiformats befassen möchten, werden Sie es wollenjavap
. Es ist im JDK enthalten und ermöglicht es Ihnen, den hexadezimalen Bytecode in lesbares ASCII zu "dekompilieren". Die Sprache, die es erzeugt, ist immer noch Bytecode (nichts wie Java), aber es ist ziemlich lesbar und äußerst lehrreich.Wenn Sie wirklich wollen, können Sie auch jede
.class
Datei in einem Hex-Editor öffnen und den Bytecode direkt lesen. Das Ergebnis ist identisch mit der Verwendungjavap
.quelle
Applet.class muss nicht dekompiliert werden. Der Quellcode der öffentlichen Java-API-Klassen wird mit dem JDK geliefert (falls Sie ihn installieren möchten) und ist besser lesbar als dekompilierter Bytecode. Sie finden komprimiert in src.zip (in Ihrem JDK-Installationsordner).
quelle
CFR - ein weiterer Java-Dekompiler ist ein großartiger Dekompiler für modernes Java, geschrieben in Java 6.
quelle
Sie können auch die verfügbaren Online-Java-Dekompilierer verwenden. Zum Beispiel http://www.javadecompilers.com
quelle