Decompiler

Was ein Decompiler ist und was er macht

Mit einem Decompiler/Dekompilierer (auch Reverse Compiler, Reverse Engineering Compiler) kann man aus einem Maschinen- oder Objektcode für den Menschen wieder lesbaren Quelltext in einer Hochsprache erzeugen. Es ist also ein Programm, das versucht, den Vorgang des Kompilierens umzukehren. Dafür kann nicht einfach auf eine Art Umkehrfunktion zurückgegriffen werden, viel mehr setzt man auf die Reverse-Engineering-Technik. Der so erzeugte Quelltext ähnelt seinen Ursprungsquelltext, ist aber nicht immer komplett identisch. Je nach gespeicherten Debuginformationen können zwar oft Variablennamen, Funktionsnamen und Module „wiederhergestellt“ werden, Kommentare und ursprüngliche Formatierungen gehen aber verloren.

Durch einen Decompiler kann man also eine Java jar-Datei in Quellcode wieder zurückübersetzen. Bei Java findet eine Dekompilierung von Bytecode statt, was in der Regel unkompliziert ist. Um eine Dekompilierung des eigenen Programms zu verhindern, kann man es mit einem Obfuscator (Quelltextverschleierer) verschleiern. Auch das verwenden einer Optimierungsoption des Compilers und das entfernen von Debuginformationen kann eine Dekompilierung erschweren.

Nur weil das Dekompilieren aber möglich ist, bedeutet dies noch lange nicht, dass es auch erlaubt ist. So schreiben kommerzielle Softwareanbieter beispielsweise in ihren Lizenzen oft ein generelles Dekompilierungsverbot fest. In Deutschland regelt § 69e UrhG die Dekompilierung. Dort steht unter anderem geschrieben:

„Die Zustimmung des Rechtsinhabers ist nicht erforderlich, wenn die Vervielfältigung des Codes oder die Übersetzung der Codeform im Sinne des § 69c Nr. 1 und 2 unerläßlich ist, um die erforderlichen Informationen zur Herstellung der Interoperabilität eines unabhängig geschaffenen Computerprogramms mit anderen Programmen zu erhalten, sofern folgende Bedingungen erfüllt sind ...“.

Java Decompiler

Ein bekannte Decompiler für die Programmiersprache Java ist der sogenannte Java Decompiler (JD). Zugegeben, bei der Namensgebung waren die Entwickler nicht wirklich kreativ, dafür macht das kleine aber feine kostenlose Programm genau das was es auch soll. JD wird als GUI-Werkzeug sowie in Form von Plugins für die Eclipse IDE (JD-Eclipse) sowie IntelliJ IDEA (JD-IntelliJ) bereitgestellt. Man findet JD unter http://jd.benow.ca/ wo man den Java Decompiler nicht nur herunterladen, sondern auch gleich ausprobieren kann. Einfach die Jar-Datei oder Class-Datei in das untere entsprechende Feld ziehen, schon sollte darunter der entsprechende zugehörige Java Code angezeigt werden.

Neben dem Java Decompiler gibt es natürlich noch weitere Decompiler für Java, die teilweise im Funktionsumfang größer, teilweise aber auch kostenpflichtig sind.

Quelle:

Artikel vom 19.06.2014