Mit welchem Programm kann ich eine Klassendatei dekompilieren? Bekomme ich tatsächlich Java-Code oder ist es nur JVM-Assembly-Code?
Bei Fragen zur Java-Leistung auf dieser Site werden häufig Antworten von Personen angezeigt, die die Java-Klassendatei "dekompiliert" haben, um zu sehen, wie der Compiler bestimmte Dinge optimiert.
java
decompiler
Pennen
quelle
quelle
Antworten:
Update Februar 2016:
www.javadecompilers.com listet JAD wie folgt auf:
Daher kann Ihr Kilometerstand je nach aktuellem JDK (7, 8) variieren.
Dieselbe Site listet andere Tools auf.
Und javadecompiler bietet, wie Salvador Valencia in den Kommentaren (September 2017) feststellte , ein SaaS an, bei dem Sie die
.class
Datei in die Cloud hochladen und den dekompilierten Code zurückgeben.Ursprüngliche Antwort: Okt. 2008
Java Decompiler (ein weiterer schneller Java-Dekompiler) hat:
Es funktioniert mit Compilern von JDK 1.1.8 bis JDK 1.7.0 und anderen ( Jikes , JRockit usw.).
Es verfügt über eine Online- Live-Demoversion , die tatsächlich voll funktionsfähig ist! Sie können einfach eine JAR-Datei auf der Seite ablegen und den dekompilierten Quellcode anzeigen, ohne etwas zu installieren.
quelle
Es gibt ein paar Dekompilierer da draußen ... Eine schnelle Suche ergibt:
Und viele mehr.
Diese erzeugen Java-Code. Java enthält etwas, mit dem Sie JVM-Bytecode ( Javap ) anzeigen können .
quelle
Um den Java-Quellcode anzuzeigen, überprüfen Sie einen Dekompiler. Suche nach jad .
Wenn Sie Bytecodes anzeigen möchten, verwenden Sie einfach Javap, das mit dem JDK geliefert wird .
quelle
Ich habe mehrere ausprobiert und Procyon schien für mich am besten zu funktionieren. Es befindet sich in der aktiven Entwicklung und unterstützt viele Funktionen der neuesten Java-Versionen.
Dies sind die anderen, die ich versucht habe:
-skip
Befehlszeilenflag verwenden, damit es bei Fehlern nicht aufhört. Aktiv entwickelt und interessanterweise in Python geschrieben.quelle
IGNORE_EXCEPTIONS
Objekt jetzt in das Befehlszeilenflag geändert wurde-skip
.Ich benutze JAD Decompiler .
Es gibt ein Eclipse- Plugin dafür, Jadeclipse . Es ist ziemlich schön.
quelle
Procyon enthält einen Dekompiler. Es ist FOSS.
quelle
Ruß ist eine Option für neueren Java-Code. Zumindest hat es den Vorteil, dass es noch vor kurzem gewartet wird ...
Auch Java Decompiler ist ein Decompiler sowohl mit einem Stand-alone - GUI und Eclipse - Integration.
Schließlich wurde Jdec nicht erwähnt, obwohl es nicht so ausgefeilt ist wie andere Optionen.
quelle
JD-GUI ist wirklich gut. Sie können einfach eine JAR- Datei öffnen und den Code durchsuchen, als würden Sie an einer IDE arbeiten. Gutes Zeug.
quelle
Hier ist eine Liste der Dekompilierer ab Februar 2015:
Procyon , Open Source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR , kostenlos, kein Quellcode verfügbar, http://www.benf.org/other/cfr/
JD , kostenlos nur für nichtkommerzielle Zwecke, http://jd.benow.ca/
Fernflower , Open Source, https://github.com/fesh0r/fernflower ,
JAD - hier nur aus historischen Gründen angegeben. Kostenlos, kein Quellcode verfügbar, http://varaneckas.com/jad/ Veraltet, nicht unterstützt und nicht korrekt dekompiliert Java 5 und höher.
Sie können die oben genannten Dekompilierer online testen, ohne dass eine Installation erforderlich ist, und Ihre eigene fundierte Wahl treffen.
Java-Dekompilierer in der Cloud: http://www.javadecompilers.com/
quelle
Es gibt einige Programme, die Sie verwenden können. Sie erhalten den eigentlichen Java-Code, aber manchmal wurde der Code verschleiert, sodass Methoden durch einen Buchstaben oder eine Zahl oder eine zufällige Mischung aus Buchstaben und Zahlen benannt werden.
DJ Decompiler Mocha
quelle
Die meisten Dekompilierer für Java basieren auf JAD . Es ist ein großartiges Tool, wurde aber leider eine Weile nicht aktualisiert und verarbeitet Java 1.5+ -Klassen nicht sehr gut. Ich habe keine Tools gesehen, die mehr als 1,5 Klassen richtig handhaben.
quelle
Schauen Sie sich Cavaj an .
quelle
jad
darunter.Alle bisher aufgelisteten JAD-Links scheinen defekt zu sein, daher habe ich diese Seite gefunden. Funktioniert super (zumindest für Linux)! Unter Ubuntu 11.10 musste ich aus irgendeinem Grund die statische herunterladen.
http://www.varaneckas.com/jad
quelle
JAD funktioniert und ist einfach.
Wenn Sie nur die Methoden anzeigen möchten, verwenden Sie Javap.
quelle
Wenn Sie sehen möchten, wie der Java-Compiler bestimmte Dinge ausführt, möchten Sie keine Dekompilierung, sondern eine Demontage. Bei der Dekompilierung wird der Bytecode in eine Java-Quelle umgewandelt, was bedeutet, dass viele Informationen auf niedriger Ebene verloren gehen. Wenn Sie sich über die Compileroptimierung wundern, sind dies wahrscheinlich genau die Informationen, die Sie interessieren.
Wie auch immer, ich habe zufällig einen Open Source Java Disassembler geschrieben . Im Gegensatz zu Javap funktioniert dies auch bei stark pathologischen Klassen, sodass Sie sehen können, was Verschleierungswerkzeuge auch für Ihre Klassen tun. Es kann auch dekompiliert werden, obwohl ich es nicht empfehlen würde.
quelle
JAD funktioniert bei mir nicht (Ubuntu 11.10-Problem), also bin ich weitergegangen und habe weitergemacht JODO gesetzt . Zumindest hat es Open Java Quellcode und konnte meine .class richtig dekompilieren .
Ich empfehle, zuerst ' branch / generic' branch zu überprüfen . Die Stämme sind nicht stabil.
quelle
Auf der IntelliJ IDEA-Plattform können Sie das Java Decompiler IntelliJ Plugin verwenden . Sie können alle Java-Quellen während des Debugging-Vorgangs anzeigen, auch wenn Sie nicht über alle verfügen. Es basiert auf den berühmten Tools JD-GUI .
quelle
Mit AndroChef Java Decompiler können Sie apk-, dex-, jar- und java-Klassendateien dekompilieren. Es ist einfach und leicht. AndroChef JD basiert auf FernFlower . Sie können es in 10 kostenlosen Anwendungen bewerten.
quelle
Für OSX empfehle ich: jarzilla oder JD-GUI
Beide ermöglichen es Ihnen, Glas, Krieg usw. Zu sehen. Dateiinhalt und dekompiliert alle darin enthaltenen Klassendateien.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
quelle