it-swarm.com.de

Java Decompiler

Können Sie einen Java-Decompiler für Eclipse empfehlen? Meine anderen Fragen: Welche Einschränkungen gibt es für die Verwendung eines dekompilierten Codes aus einem anderen Java-Programm? Illegal oder was? Ich weiß nicht viel über Lizenzen. Danke fürs Lesen.

21
MartK

Ich würde denjenigen vorschlagen, der bei Google auftaucht, nämlich der JD Java-Dekompilierer . 

In Bezug auf die Einschränkungen müssten Sie eine Lizenz für eine bestimmte Software lesen. Es könnte geschrieben werden, dass jegliche Art der Dekompilierung verboten ist. 

30
Mirek Pluta

Ich mag JadClipse -, aber es zeigt an manchen Stellen sein Alter. Du wirst brauchen:

  • ein jad binär
  • jadClipse installiert
  • richten Sie die Eclipse-Einstellungen auf die obige Jad-Binärdatei
  • sagen Sie es, um Zeilennummern zu erzeugen und für das Debuggen auszurichten

Es gibt einige Mängel:

  • code wird sequentiell erzeugt, wenn Bytecode neu angeordnet wurde, sodass etwas im Bytecode zu spät kommt, aber früh in der ursprünglichen Quelle war. 
  • jad versteht Java 5 + 6-Bytecode nicht sehr gut.

Ich habe dieses Eclipse-Plugin verwendet: JadClipse

und dieser Java-Decompiler: JAD

5
treaz

Ich habe mehrere Dekompilierer ausprobiert und die meisten von ihnen haben keine korrekte Quelle für das Applet erstellt, das ich dekompilieren wollte (das war http://mrl.nyu.edu/~perlin/experiments/emotive-actors/ , falls jemand reproduzieren möchte).

Das absolut fehlerfreie war Cavaj 1.11 , der von ihm erzeugte Code enthält keine Syntaxfehler und das aus den Quellen kompilierte Applet läuft identisch mit dem Original. Was mir auf der UI-Seite gefehlt hat, waren: Strg-A/Strg-C-Tastenkombinationen funktionieren nicht und es ist keine Stapelkonvertierung verfügbar.

Die anderen Dekompilierer, die ich ausprobiert habe, waren:

  • JD Java Decompiler (Freeware) sieht gut aus, hat aber viele Fehler mit Variablendeklarationen gemacht (einige Deklarationen fehlten, andere wurden schlecht platziert)
  • Neshkov DJ Java Decompiler (Shareware) sieht auch gut aus, der von ihm erzeugte Code enthielt weniger Syntaxfehler als JD, aber der Code funktionierte nicht. Da das Produkt nicht kostenlos ist, würde man ein bisschen mehr davon erwarten.
5
Suma

JD ist der beste Java Decompiler, den ich kenne.

2
secmask

Ich kann Ihre erste Frage nicht beantworten: Es wäre voreingenommen, vielleicht ...

Zu Ihrer zweiten Frage ist die Dekompilierung LEGAL. Dieser Punkt ist für mich sehr wichtig. Schauen Sie auf diese interessante Seite: http://www.program-transformation.org/Transform/LegalityOfDecompilation

2
Emmanuel Dupuy

Ich fand JD sehr gut zu sein. Es gab jedoch ein oder zwei kleinere Fehler, die bei der Ausführung zu unerwartetem Verhalten führten.

Ich hatte zum Beispiel ein Beispiel, bei dem die ursprüngliche case-Anweisung auf dem letzten Knoten keinen 'break' hatte (weil dies natürlich unnötig ist), aber da JD die Knoten neu ordnete, bedeutete dies, dass der 'default'-Fall war unerwartet gerufen. Ich hatte auch ein Problem mit Zeichensätzen, bei denen ich am Ende der Dinge einige zusätzliche toString () - Aufrufe benötigte, um sich wie erwartet abzumelden. Ansonsten war es super!

Ich habe einen anderen Decompiler DJ verwendet, um zu ermitteln, was mit dem von JD dekompilierten Code falsch war. Aber es gab andere Dinge, mit denen DJ nicht umgehen konnte, also denke ich, dass eine Mischung aus beiden Dekompilern für mich funktioniert hat :)

Hoffentlich wird Herr Dupuy dies lesen!

1