Decompiler

Programmierung-Fachbegriffe
Ein Decompiler ist ein Computerprogramm, das aus Maschinensprache oder manchmal auch Objektcode in den Quellcode einer Hochsprache übersetzt. Dies ist nicht zu verwechseln mit einem Disassembler, der Maschinensprache in Assemblersprache rückübersetzt.

Dekompilierung ist eine Technik zur Erzeugung eines Quellcodes zu einem ausführbaren Programm. Der gewonnene Quellcode hat mehr oder weniger Ähnlichkeit mit der Ursprungsfassung, die zur Erzeugung des Programmes benutzt wurde.

Wenn in dem ausführbaren Programm Debuginformationen gespeichert sind, können sogar die vom ursprünglichen Autor verwendeten Variablennamen, Funktionsnamen und Module zurückgewonnen werden. Verloren sind selbstverständlich Kommentare sowie die ursprüngliche Formatierung, da beides nicht im Compilat enthalten ist.

Wenn das Programm hingegen mit einer Optimierungsoption des Compilers übersetzt wurde und keine Debuginformationen enthält, oder gar mit einem Obfuscator verschleiert wurde, kann der gewonnene Quelltext bis zur Unbenutzbarkeit entstellt sein.

Die Dekompilierung von Java- und .NET-Programmen ist in der Regel unkomplizierter als die Dekompilierung von normalen Binary-Programmen, da diese Systeme relativ viele Informationen des Originalquellcodes mit in die Objektdatei übernehmen, vergleichbar mit der Debug-Version eines C- oder C++-Programmes.

Insbesondere die Typinformation und die Namen von öffentlichen Bezeichnern bleiben erhalten. Der dekompilierte Programmcode ist jedoch nur funktional identisch mit der ursprünglichen Quelldatei.

Aufgrund der genannten Einschränkungen eignet sich Dekompilierung eigentlich nicht, um verloren gegangene Quelltexte zu restaurieren. Diese sollten als kostbarstes Gut der Softwarehersteller ohnehin immer in vielfachen Sicherungen vorhanden sein.

Unter normalen Umständen wird ein Programmierer niemals einen Decompiler einsetzen müssen. Bei sehr alter Software kommt es jedoch hin und wieder vor, dass die Urspungsquellen verloren wurden oder sich auf Datenträgern befinden, für die keine passenden Lesegeräte mehr verfügbar sind.

In den Anfangszeiten der elektronischen Datenverarbeitung war es außerdem eine weit verbreitet Unart, kleine Fehler durch patchen der Objektdateien zu beheben. Diese Fälle sind neben dem, meist unter Missachtung des Urheberrechtes durchgeführten, rückentwickeln fremder Software die einzigen Ausnahmen, für die Decompiler zum Einsatz kommen.
Im Beitrag enthaltene URLs:
 
nach oben