2010-12-07 6 views
21

Können Sie einen Java Decompiler für Eclipse empfehlen? Meine anderen Fragen sind, 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.Java Decompiler

+0

ähnliche Diskussion ist in [Auswahl und Test Java Decompiler] (http://stackoverflow.com/questions/3898391). –

+0

"Eclipse Class Decompiler" vielleicht? Standort der Site ist 'http: // feeling.sourceforge.net/update/'. Lesen Sie mehr http://www.blogjava.net/cnfree/archive/2012/10/30/390457.html, und http://feeling.sourceforge.net/ –

+8

Interessant, dass diese Fragen als Off-Topic geschlossen sind, als Viele Programmierer wie ich kommen für genau diese Probleme zu SO (Und finden Sie die Antworten, dank der Antworten unten). Laut dem "Ask" -Teil dieser Seite sollten Fragen "im Allgemeinen ... Software-Tools abdecken, die von Programmierern üblicherweise verwendet werden". –

Antwort

30

Ich würde vorschlagen, die auf Google erscheint, die JD Java Decompiler ist. Es funktioniert wirklich gut.

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

+3

+1 - lesen Sie die Lizenz. * "Ich weiß nicht viel über Lizenzen." * Ist keine gültige Entschuldigung, wenn Sie wegen Verletzung der Lizenzbedingungen verklagt werden. –

+1

Nur ein Kopf hoch, das funktioniert derzeit nicht in 3.7 (Indigo). –

+1

JD-GUI kann Typen nicht dekompilieren, die durch aspectj - der dargestellte Java-Code abgeschnitten wird. – mark

2

JD ist der beste Java Decompiler, den ich kenne.

+0

JD-GUI kann Typen nicht dekompilieren von aspectj - der vorgestellte Java-Code ist abgeschnitten. – mark

7

Ich mag JadClipse - aber es zeigt sein Alter in Orten. Sie benötigen:

  • eine jad binäre
  • JadClipse
  • Punkt, um die Eclipse-Einstellungen auf die oben jad binären
  • sagen, es Zeilennummern zu erzeugen, installiert und richten

für das Debugging Es sind einige Unzulänglichkeiten:

  • code ist pr Wenn der Byte-Code neu angeordnet wurde, kam etwas zu spät in den Byte-Code, war aber früh in der ursprünglichen Quelle. jad spult nicht zurück, um den disassemblierten Code in die richtige Zeile zu bringen.
  • Jad versteht Java 5 + 6 Bytecode nicht sehr gut.
2

Ich kann nicht Ihre erste Frage beantworten: es voreingenommen sein würde, vielleicht ...

über Ihre zweite Frage ist die Dekompilierung LEGAL. Dieser Punkt ist sehr wichtig für mich. Werfen Sie einen Blick auf diese interessante Seite: http://www.program-transformation.org/Transform/LegalityOfDecompilation

+0

danke für das Feedback – MartK

+0

Es ist nur unter bestimmten Umständen in den Vereinigten Staaten legal. Zumindest nach dem von Ihnen angegebenen Link. –

1

Ich fand JD sehr gut zu sein. Allerdings gab es ein oder zwei kleinere Fehler, die mir zur Laufzeit unerwartetes Verhalten zur Folge hatten.

Zum Beispiel hatte ich ein Beispiel, wo die ursprüngliche case-Anweisung keine "Pause" auf dem letzten Knoten hatte (weil natürlich das unnötig ist), aber weil JD endete die Reihenfolge der Knoten bedeutete es Der Standardfall wurde unerwartet aufgerufen. Ich hatte auch ein Problem mit Zeichensätzen, wo ich einige extra toString() -Aufrufe am Ende der Dinge benötigte, damit es sich wie erwartet abmeldete. Abgesehen davon war es großartig!

Ich benutzte einen anderen Decompiler DJ, um mir zu helfen herauszufinden, 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 Decompilern für mich funktionierte :)

Hoffentlich wird Herr Dupuy dies lesen!

+0

JD-GUI kann Typen nicht dekompilieren, die durch aspectj dekompiliert werden - der vorgestellte Java-Code wird abgeschnitten. – mark

5

Ich habe mehrere decompilers ausprobiert und die meisten von ihnen haben es versäumt, eine korrekte Quelle für das Applet zu erzeugen, das ich zu dekompilieren versuchte (das war http://mrl.nyu.edu/~perlin/experiments/emotive-actors/, falls jemand reproduzieren möchte).

Dasjenige, das absolut einwandfrei funktioniert hat, 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 fehlte, war: Strg-A/Ctrl-C-Tastenkürzel funktionierten nicht, und keine Stapelkonvertierung war verfügbar.

Die anderen decompilers ich versucht habe, waren:

  • JD Java decompiler (Freeware) sieht nett aus, aber es hat eine Menge Fehler mit variablen Erklärungen (einige Erklärungen fehlten, andere schlecht platziert wurden)
  • Neshkov DJ Java Decompiler (Shareware) sieht auch gut aus, der von ihm erzeugte Code enthielt weniger Syntaxfehler als JD, aber der Code funktionierte nicht. Angesichts der Tatsache, dass das Produkt nicht kostenlos ist, würde man ein bisschen mehr davon erwarten.
+2

Cavaj ist nur ein Wrapper für Jad. Jad wird leider nicht gepflegt und es fehlt Unterstützung für Java 6/7, z. Statische Importe werden nicht unterstützt. – rustyx

5

ich diese Eclipse-Plugin verwendet habe: JadClipse

und diese Java Decompiler: JAD

Verwandte Themen