Decompiler

Decompiler

Der Begriff Dekompilierer oder englisch Decompiler bezeichnet ein Computerprogramm, das aus den Datenbytes der Maschinensprache oder manchmal auch aus Daten im Objektcode wieder lesbaren Quellcode in einer Hochsprache erzeugt. Seine Arbeitsweise ist somit genau umgekehrt zu der eines Compilers. Dies ist nicht zu verwechseln mit einem Disassembler, der Maschinensprache in Assemblersprache rückübersetzt. Andere Bezeichnungen für Decompiler sind Reverse Compiler bzw. Reverse Engineering Compiler.

Inhaltsverzeichnis

Funktionsweise

Dekompilierung ist eine Reverse-Engineering-Technik zum erneuten nachträglichen Erzeugen von Quellcode basierend auf einem ausführbaren Programm. 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 Compilat enthalten sind.

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++-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 eigentlich nicht, um verlorengegangene 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 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 eine weit verbreitete Unart, kleine Fehler durch patchen der Objektdateien zu beheben. Diese Fälle sind neben dem Rückentwickeln fremder Software die einzigen Ausnahmen, für die Decompiler zum Einsatz kommen.

Rechtliches

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

Allerdings ist es nach § 69e, UrhG in Deutschland 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

(allesamt in englischer Sprache)


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Decompiler — Decompiler,   Recompiler …   Universal-Lexikon

  • Decompiler — A decompiler is the name given to a computer program that performs, as far as possible, the reverse operation to that of a compiler. That is, it translates a file containing information at a relatively low level of abstraction (usually designed… …   Wikipedia

  • Decompiler — De|com|pi|ler [di:kɔm pailɐ] der; s, <aus gleichbed. engl. decompiler zu de (vgl. ↑de...) u. compiler, vgl. ↑Compiler> Computerprogramm, das ein Maschinenprogramm einer Rechenanlage in ein Programm einer problemorientierten… …   Das große Fremdwörterbuch

  • decompiler — dekompiliatorius statusas T sritis informatika apibrėžtis Programa, iš sukompiliuotos programos teksto atkurianti jos ↑pirminį tekstą (1), t. y. atliekanti veiksmą, atvirkščią ↑kompiliavimui. Atkurtas programos tekstas gali nesutapti su… …   Enciklopedinis kompiuterijos žodynas

  • decompiler — noun A computer program performing the reverse operation to that of a compiler …   Wiktionary

  • décompiler — ● vt. ►DEBUG Transformer un programme exécutable (donc du code binaire) en son équivalent dans un langage de haut niveau. Pour une transformation en un langage de bas niveau, on dit désassembler …   Dictionnaire d'informatique francophone

  • Vb-decompiler — это декомпилятор исполняемых модулей (EXE, Visual Basic 6.0. Может использоваться для анализа программ и восстановления исходного кода. Как известно, программы, разработанные на Visual Basic, могут быть скомпилированы либо в интерпретируемый p… …   Википедия

  • Mocha (decompiler) — Mocha is a Java decompiler, which allows programmers to translate a program s bytecode into source code. A beta version of Mocha was released in 1996, by Dutch developer Hanpeter van Vliet, alongside an obfuscator named Crema. A controversy… …   Wikipedia

  • VB Decompiler — это декомпилятор исполняемых модулей (EXE, DLL, OCX), созданных при помощи Visual Basic 6.0. Может использоваться для анализа программ и восстановления исходного кода. Как известно, программы, разработанные на Visual Basic, могут быть… …   Википедия

  • Dekompilieren — Der Begriff Dekompilierer oder englisch Decompiler bezeichnet ein Computerprogramm, das aus den Datenbytes der Maschinensprache oder manchmal auch aus Daten im Objektcode wieder lesbaren Quellcode in einer Hochsprache erzeugt. Seine Arbeitsweise… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”