Decompiler


(Weitergeleitet von Dekompilierung)

Ein Dekompilierer (englisch Decompiler oder auch Reverse Compiler, Reverse Engineering Compiler) ist ein Computerprogramm, das aus Maschinen- oder Objektcode für den Menschen wieder lesbaren Quelltext in einer Hochsprache erzeugt. Er versucht, den Vorgang des Kompilierens umzukehren.

Ein Dekompilierer ist nicht zu verwechseln mit einem Disassembler, da die Assemblersprache nur eine alternative Darstellungsform des Maschinencodes ist.

Inhaltsverzeichnis

Funktionsweise


Da es für die Kompilierung meist keine Umkehrfunktion gibt, ist eine Dekompilierung eine Reverse-Engineering-Technik. Sie wird zum erneuten nachträglichen Erzeugen von Quellcode benutzt, der auf einem ausführbaren Programm basiert. Der gewonnene Quellcode hat in gewissen Grenzen Ähnlichkeit mit der Ursprungsfassung des Quellcodes, der zur Erzeugung des ausführbaren Programms benutzt wurde. Wenn in diesem ausführbaren Programm zusätzlich noch Debuginformationen gespeichert sind, dann können oft sogar die vom ursprünglichen Autor verwendeten Variablennamen, Funktionsnamen und Module wieder zurückgewonnen werden. Verlorengegangen sind üblicherweise Kommentare sowie die ursprüngliche Formatierung, da beide Informationen typischerweise nicht mehr im Kompilat enthalten sind.

Die Dekompilierung von Bytecode, wie z. B. Java- und .NET-Programmen, ist in der Regel unkomplizierter als die Dekompilierung von Maschinencode, da diese Systeme relativ viele Informationen des Originalquellcodes mit in die Objektdatei übernehmen, vergleichbar mit der Debug-Version eines C- oder C++-Programms. Insbesondere die Typinformation und die Namen von öffentlichen Bezeichnern bleiben erhalten. Der dekompilierte Programmcode ist jedoch nur funktional identisch mit der ursprünglichen Quelldatei.

Einschränkungen


Wurde das Programm hingegen mit einer Optimierungsoption des Compilers übersetzt und es sind keine Debuginformationen enthalten oder es wurde gar mit einem Obfuscator verschleiert, dann kann der zurückgewonnene Quelltext in Einzelfällen bis zur Unbenutzbarkeit entstellt sein.

Aufgrund der genannten Einschränkungen eignet sich Dekompilierung normalerweise nicht, um verlorengegangene Quelltexte zu restaurieren. Diese sollten ohnehin immer in vielfachen Sicherungen vorhanden sein. Unter normalen Umständen wird ein Programmierer selten einen Decompiler einsetzen. Bei sehr alter Software kommt es jedoch hin und wieder vor, dass die Ursprungsquellen 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 üblich, kleine Fehler durch patchen der Objektdateien zu beheben. Diese Fälle sind neben dem Rückentwickeln fremder Software die einzigen Anwendungsfälle, für die Decompiler zum Einsatz kommen.

Rechtliches


Kommerzielle Softwareanbieter weisen in ihren Lizenzen oft darauf hin, dass das Dekompilieren ihrer Produkte verboten sei (sei es auch nur zu Studienzwecken oder um die Software für den Eigengebrauch zu verändern).

Allerdings ist es im Recht Deutschlands nach § 69e UrhG unter bestimmten Bedingungen erlaubt, ein Programm zu dekompilieren, soweit dies notwendig ist, um die „Interoperabilität“ mit einem unabhängig vom ursprünglichen Programm geschaffenen Computerprogramm zu erhalten. Lizenzvereinbarungen, die dem widersprechen, sind nichtig.

Siehe auch


Weblinks











Kategorien: Programmierwerkzeug




Stand der Informationen: 22.11.2020 06:20:52 CET

Quelle: Wikipedia (Autoren [Versionsgeschichte])    Lizenz: CC-BY-SA-3.0

Veränderungen: Alle Bilder und die meisten Designelemente, die mit ihnen in Verbindung stehen, wurden entfernt. Icons wurden teilweise durch FontAwesome-Icons ersetzt. Einige Vorlagen wurden entfernt (wie „Lesenswerter Artikel“, „Exzellenter Artikel“) oder umgeschrieben. CSS-Klassen wurden zum Großteil entfernt oder vereinheitlicht.
Wikipedia spezifische Links, die nicht zu Artikeln oder Kategorien führen (wie „Redlink“, „Bearbeiten-Links“, „Portal-Links“) wurden entfernt. Alle externen Links haben ein zusätzliches FontAwesome Icon erhalten. Neben weiteren kleinen Designanpassungen wurden Media-Container, Karten, Navigationsboxen, gesprochene Versionen & Geo-Mikroformate entfernt.

Wichtiger Hinweis Da die gegebenen Inhalte zum angegebenen Zeitpunkt maschinell von Wikipedia übernommen wurden, war und ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.org nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein oder Fehler in der Darstellung vorliegen, bitten wir Sie darum uns per zu kontaktieren: E-Mail.
Beachten Sie auch : Impressum & Datenschutzerklärung.