Frage

Welches Programm kann ich verwenden, um eine Klassendatei zu dekompilieren? Werde ich Java-Code tatsächlich bekommen, oder ist es nur JVM Assembler-Code?

Auf Java Performance Fragen auf dieser Seite oft ich Antworten von Menschen sieht, die haben die Java-Klassendatei „dekompilierten“, um zu sehen, wie der Compiler bestimmte Dinge optimiert.

War es hilfreich?

Lösung

Update Februar 2016:

www.javadecompilers.com listet JAD als Sein:

  

der beliebtestene Java Decompiler, vor allem aber in diesem Alter nur. Geschrieben in C ++, so sehr schnell.
  Veraltete, nicht unterstützt und decompile nicht richtig Java 5 und höher

So Ihre Laufleistung mit dem letzten jdk variieren kann (7, 8).

Die gleiche Aufstellungsortliste andere Werkzeuge.

Und Java Decompiler, wie bereits von Salvador Valencia in Kommentare (September 2017), bietet eine SaaS, wo Sie die .class Datei in die Cloud hochladen und es gibt Sie die dekompilierten Code.


Original Antwort: Oktober 2008

  • Die endgültige Version von JSR 176, die wichtigsten Funktionen von J2SE 5.0 (Java SE 5) definiert, hat am 30. September 2004 veröffentlicht.
  • Die neueste Java-Version von JAD, der berühmten Java Decompiler geschrieben von Herrn Pavel Kouznetsov unterstützt wird, ist JDK 1.3 .
  • Die meisten der Java Decompiler herunterladbare heute aus dem Internet, wie zum Beispiel „DJ Java Decompiler“ oder „Cavaj Java Decompiler“, von JAD mit Energie versorgt werden. Sie können nicht Java 5 Quellen angezeigt werden

Java Decompiler (Noch ein weiterer schneller Java Decompiler) hat:

  • Explizite Unterstützung für decompiling und Analyse von Java 5 + „.class“ -Dateien.
  • Eine nette GUI:

Screenshot

Es funktioniert mit Compiler von JDK 1.1.8 bis zu JDK 1.7.0, und andere ( Jikes JRockit , etc.).

Es verfügt über eine Online- dass tatsächlich voll funktionsfähig ist! Sie können nur eine JAR-Datei auf der Seite fallen und die dekompilierten Quellcode sehen, ohne etwas zu installieren.

Andere Tipps

Es gibt ein paar decompilers gibt ... eine schnelle Suche ergibt:

  1. Procyon : Open-Source (Apache 2) und aktiv entwickelt
  2. Krakatau : Open-Source (GPLv3) und aktiv entwickelt
  3. CFR : Open-Source (MIT) und aktiv entwickelt
  4. JAD
  5. DJ Java Decompiler
  6. Mocha

Und viel mehr.

Diese erzeugen Java-Code. Java kommt mit etwas, das Sie sehen JVM-Bytecode ( lässt javap ).

Java-Quellcode zu sehen, einige Decompiler überprüfen. Suche Los für jad .

Wenn Sie Bytecode sehen möchten, verwenden Sie einfach javap , die mit dem JDK kommt.

Ich habe versucht, mehr, und Procyon schien das Beste für mich zu arbeiten. Es ist unter aktiver Entwicklung und unterstützt viele Features der neuesten Versionen von Java.

Dies sind die anderen, die ich versucht:

  • CFR
    • Viel versprechende, aber oft nicht Methode Dekompilierung. Ich werde mein Auge auf diese werden zu halten. Auch aktiv mit Unterstützung für die neuesten Java-Funktionen entwickelt.
  • Krakatau
    • nimmt einen anderen Ansatz, dass es zur Ausgabe Äquivalent von Java-Code versucht stattdessen die ursprüngliche Quelle zu versuchen, zu rekonstruieren, die das Potenzial macht es besser für verschleierten Code. Von meinen Tests war es etwa auf dem Niveau Procyon, aber immer noch schön, etwas anderes zu haben. Ich habe die -skip Befehlszeilenmarkierung zu verwenden, so dass es nicht auf Fehler stoppen würde. Aktiv entwickelt, und interessanterweise ist es in Python geschrieben.
  • JD-GUI
  • JAD
    • gearbeitet, aber nur unterstützt Java 1.4 und unten. Auch erhältlich als Eclipse-Plugin . Nicht mehr in der Entwicklung.

Ich benutze JAD Decompiler .

Es gibt eine Eclipse- Plugin für sie, jadeclipse . Es ist sehr schön.

Procyon enthält einen Decompiler. Es ist FOSS.

Soot ist eine Option für neueren Java-Code. Zumindest hat es den Vorteil, noch vor kurzem gehalten wird ...

Auch Java Decompiler ist ein Decompiler sowohl mit einem Stand- allein GUI und Eclipse-Integration.

Schließlich JDEC wurden nicht genannt, obwohl es ist nicht so poliert als andere Optionen.

JD-GUI ist wirklich gut. Sie könnten nur eine JAR Datei öffnen und den Code durchsuchen, als ob Sie arbeiten an einer IDE. Good stuff.

Hier ist eine Liste von decompilers ab Februar 2015:

Procyon , Open-Source, https: // bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler

CFR , frei, kein Quellcode verfügbar, http: / /www.benf.org/other/cfr/

JD , kostenlos für nicht-kommerzielle Nutzung, http: //jd.benow .ca /

Fernflower , Open-Source, https://github.com/fesh0r/ fernflower ,

JAD - gegeben hier nur aus historischen Gründen. Frei, kein Quellcode verfügbar, http://varaneckas.com/jad/ Veraltet, nicht unterstützt und decompile nicht richtig Java 5 und höher.

Sie können testen oben genannten decompilers online, keine Installation erforderlich und Ihre eigene gebildete Wahl.

Java Decompiler in der Cloud: http://www.javadecompilers.com/

Es gibt einige Programme, die Sie verwenden können. Sie erhalten den aktuellen Java-Code erhalten, aber manchmal wird der Code verschleiert wurde so Methoden durch einen Buchstaben oder eine Zahl oder eine zufällige Kombination aus Buchstaben und Zahlen genannt werden.

DJ Decompiler Mocha

Die meisten Decompiler für Java basieren auf JAD . Es ist ein großartiges Werkzeug, aber leider nicht für eine Weile aktualisiert worden und behandelt nicht Java 1.5+ Klassen sehr gut. Ich habe keine Werkzeuge gesehen, dass 1.5+ Klassen richtig behandelt.

Hier finden Sie aktuelle Cavaj .

Alle der JAD Links aufgeführt bisher weit scheinen gebrochen zu werden, so fand ich diese Website. Funktioniert hervorragend (für Linux, zumindest)! Am 11.10 Ubuntu hatte ich die statischen welchen Grund auch immer zum Download bereit.

http://www.varaneckas.com/jad

  • JAD ist eine, die funktioniert und ist einfach.

  • Auch wenn Sie nur die Methoden wollen, um zu sehen, verwenden Sie javap.

Wenn Sie sehen möchten, wie der Java-Compiler bestimmte Dinge tut, wollen Sie nicht Dekompilierung, Sie Demontage wollen. Decompilation beinhaltet die Bytecode in Java Source-Transformation, was bedeutet, dass eine Menge von niedrigem Niveau Informationen verloren gehen, und wenn Sie über Compiler-Optimierung fragen, ist dies wahrscheinlich die sehr Informationen, die Sie interessieren.

Wie auch immer, ich zufällig ein Open-Source-Disassembler Java geschrieben haben. und im Gegensatz zu javap funktioniert dies auch auf stark pathologischen Klassen, so können Sie sehen, was Verschleierungs Tools, um Ihre Klassen tun. Es kann auch Dekompilierungsprozeß tun, obwohl ich es nicht empfehlen würde.

JAD ist für mich nicht (Ubuntu 11.10 Ausgabe), so habe ich nach vorne und tunkte bewegt auf JODO . Mindestens es öffnet Java-Quellcode hat und in der Lage gewesen zu dekompilieren meines .class- richtig.

Ich empfehle check out 'Zweige / generic' Zweig zuerst. Die Stämme sind nicht stabil.

Auf IntelliJ IDEA-Plattform können Sie Java Decompiler IntelliJ Plugin . Es erlaubt Ihnen, alle Java-Quellen während Ihres Bugprozess angezeigt werden, auch wenn Sie sie nicht alle haben. Es basiert auf den bekannten Werkzeugen JD-GUI .

Mit AndroChef Java Decompiler apk decompile können, dex, Glas und Java-Klasse-Dateien. Es ist einfach und leicht. AndroChef JD basiert auf FernFlower . Sie können es in 10 kostenlosen Anwendungen bewerten.

  

AndroChef unterstützt Java-Sprache-Funktionen wie Generics, Aufzählungen und Anmerkungen. Einige Studien zufolge ist AndroChef Java Decompiler kann 98,04% der Java-Anwendungen mit traditionellen Java-Compiler generierten decompile - eine sehr hohe Wiederfindungsrate. Es ist einfach, aber leistungsstarkes Tool, das Ihnen zu dekompilieren Java und Dalvik-Bytecode (DEX, APK) in lesbare Java Quelle erlaubt.

Für OSX Ich empfehle: jarzilla oder JD-GUI

Sie beide können Sie Glas sehen, Krieg usw. Datei-Inhalt und dekompiliert alle Klassendateien in ihnen.

Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top