<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Decompiler</id>
	<title>Decompiler - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Decompiler"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Decompiler&amp;action=history"/>
	<updated>2026-05-23T16:03:58Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Decompiler&amp;diff=81634&amp;oldid=prev</id>
		<title>imported&gt;Sebastian.Dietrich: /* Einschränkungen */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Decompiler&amp;diff=81634&amp;oldid=prev"/>
		<updated>2024-08-17T16:27:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Einschränkungen&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein &amp;#039;&amp;#039;&amp;#039;Dekompilierer&amp;#039;&amp;#039;&amp;#039; (englisch {{lang|en|&amp;#039;&amp;#039;&amp;#039;Decompiler&amp;#039;&amp;#039;&amp;#039;}} oder auch {{lang|en|Reverse Compiler}}, {{lang|en|Reverse Engineering Compiler}}) ist ein [[Computerprogramm]], das aus [[Maschinencode|Maschinen-]] oder [[Objektcode]] für den Menschen wieder lesbaren [[Quelltext]] in einer [[Höhere Programmiersprache|Hochsprache]] erzeugt. Er versucht, den Vorgang des [[Kompilieren]]s umzukehren.&lt;br /&gt;
&lt;br /&gt;
Ein Dekompilierer ist nicht zu verwechseln mit einem [[Disassembler]], da die [[Assemblersprache]] nur eine alternative Darstellungsform des Maschinencodes ist.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
&lt;br /&gt;
Da es für die [[Kompilierung]] meist keine [[Umkehrfunktion]] gibt, ist eine Dekompilierung eine [[Reverse Engineering|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 [[Debugger|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 [[Compiler|Kompilat]] enthalten sind.&lt;br /&gt;
&lt;br /&gt;
Die Dekompilierung von Bytecode, wie z.&amp;amp;nbsp;B. [[Java (Programmiersprache)|Java]]- und [[.Net-Framework]]-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.&lt;br /&gt;
&lt;br /&gt;
== Einschränkungen ==&lt;br /&gt;
&lt;br /&gt;
Wurde das Programm mit einer [[Compiler#Programmoptimierung (ausführlich)|Optimierungsoption]] des Compilers übersetzt und sind keine Debuginformationen enthalten, oder es wurde gar mit einem [[Obfuskation (Software)|Obfuscator]] verschleiert, dann kann der zurückgewonnene Quelltext in Einzelfällen bis zur Unbenutzbarkeit entstellt sein.&lt;br /&gt;
&lt;br /&gt;
Aufgrund der genannten Einschränkungen eignet sich Dekompilierung normalerweise nicht, um verlorengegangene Quelltexte zu restaurieren. Diese sollten ohnehin immer in vielfachen [[Datensicherung|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 [[Patch (Software)|patchen]] der Objektdateien zu beheben. Diese Fälle sind neben dem [[Reverse Engineering|Rückentwickeln]] fremder Software die einzigen Anwendungsfälle, für die Decompiler zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Rechtliches ==&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Allerdings ist es im Recht Deutschlands nach {{§|69e|urhg|juris}} [[Gesetz über Urheberrecht und verwandte Schutzrechte|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.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Disassembler]]&lt;br /&gt;
* [[Reverse Engineering]] (auch zu rechtlichen Aspekten)&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* http://www.program-transformation.org/Transform/DeCompilation - Das DeCompilation Wiki diskutiert verschiedene Aspekte der Dekompilierung: Geschichte, Forschung, Mustersuche, die generelle Herangehensweise, Java-Decompiler (und warum diese so viel besser als Binary-Decompiler funktionieren) usw.&lt;br /&gt;
* {{Literatur |Autor=Nicolas Harrand, César Soto-Valero, Martin Monperrus, Benoit, Baudry |Hrsg=IEEE |Titel=The Strengths and Behavioral Quirks of Java Bytecode Decompilers |Sammelwerk=19th IEEE International Working Conference on Source Code Analysis and Manipulation |Datum=2019 |ISBN=978-1-72814-938-7 |Sprache=en |Online=https://www.researchgate.net/publication/334465294_The_Strengths_and_Behavioral_Quirks_of_Java_Bytecode_Decompilers |Format=PDF |KBytes= |Abruf=2020-11-18 |DOI=10.1109/SCAM.2019.00019}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierwerkzeug]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Sebastian.Dietrich</name></author>
	</entry>
</feed>