<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Disassembler</id>
	<title>Disassembler - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Disassembler"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Disassembler&amp;action=history"/>
	<updated>2026-05-14T22:35:45Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Disassembler&amp;diff=6731&amp;oldid=prev</id>
		<title>193.28.249.20: /* Sonstiges */ Da die binutils auf vielen Entwicklerrechnern eh schon ab Distro drauf sind, kann man auch dieses Werkzeug beim Namen nennen. Quelle: https://sourceware.org/binutils/docs/binutils/objdump.html#index-disassembling-object-code</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Disassembler&amp;diff=6731&amp;oldid=prev"/>
		<updated>2024-01-15T10:43:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Sonstiges: &lt;/span&gt; Da die binutils auf vielen Entwicklerrechnern eh schon ab Distro drauf sind, kann man auch dieses Werkzeug beim Namen nennen. Quelle: https://sourceware.org/binutils/docs/binutils/objdump.html#index-disassembling-object-code&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;Disassembler&amp;#039;&amp;#039;&amp;#039; ist ein [[Computerprogramm]], das die [[Binärcode|binär]] kodierte [[Maschinensprache]] eines ausführbaren Programmes in eine für Menschen lesbarere [[Assemblersprache]] umwandelt. Seine Funktionalität ist der eines [[Assembler (Informatik)|Assemblers]] entgegengesetzt.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Zu jedem Prozessorbefehl existiert ein entsprechender Befehl in Assemblersprache, ein [[Assemblersprache#Beschreibung|Mnemonic]]. Auch die einzelnen [[Argument (Informatik)#Tatsächliche Parameter oder Argumente|Argumente]] der Prozessorbefehle, wie [[Register (Prozessor)|Register]]nummern oder [[Speicheradresse]]n, lassen sich eins zu eins in Assemblercode übertragen. Ein Disassembler übersetzt also die binären Repräsentationen der Prozessorbefehle zurück in für Menschen lesbare Assemblersprache.&lt;br /&gt;
&lt;br /&gt;
Bei einem Programm, das in Assembler geschrieben wurde, lässt sich der ursprüngliche Code im Allgemeinen nachträglich nicht im Originaltext wiederherstellen, sondern lediglich funktional gleich. Pseudobefehle, [[Label (Programmierung)|Labels]] und [[Kommentar (Programmierung)|Kommentare]] sind vom Programmierer gewählt und haben daher zumindest keine direkte, d.&amp;amp;nbsp;h. [[Bijektivität|eindeutig umkehrbare]] Entsprechung im Maschinencode, was die exakte textliche Rekonstruktion unmöglich macht. Bei einem Programm, das in einer [[Höhere Programmiersprache|höheren Programmiersprache]] geschrieben wurde, hat der [[Compiler]] meist verschiedene Optimierungen vorgenommen, welche die Programmausführung beschleunigen, aber den Maschinencode komplexer machen.&lt;br /&gt;
&lt;br /&gt;
Ein Disassemblat ist damit in der Regel deutlich schlechter lesbar als der ursprüngliche Assemblercode. Auch aus diesem Grund ist es bei komplexeren Programmabschnitten sinnvoll und üblich, die Disassemblierung nicht in einem einzigen Durchgang vollautomatisch vorzunehmen, sondern in Wiederholungen mit manuellen Zwischenschritten. Hierbei können aus schrittweiser Erfahrung und Erkenntnis zunehmend [[Bezeichner]] für [[Sprungmarke]]n, [[Unterprogramm]]e, [[Variable (Programmierung)|Variablen]], [[Konstante (Programmierung)|Konstanten]] sowie Kommentare manuell verfeinert und zur Optimierung in nachfolgenden Durchläufen vorgegeben werden.&lt;br /&gt;
&lt;br /&gt;
== Nutzen ==&lt;br /&gt;
Der Zweck eines Disassemblers liegt meistens darin, die Diagnose und das Auffinden von potenziellen Fehlern in einem Programm zu erleichtern oder die Ausgabe eines Compilers zu überprüfen. Oft wird er auch zum [[Reverse Engineering]] benutzt.&lt;br /&gt;
&lt;br /&gt;
== Disassembler ==&lt;br /&gt;
Eine Liste von Programmen, die verschiedene Modelle und Dateiformate verarbeiten können. Zum Teil auf [[GitHub]] einsehbar.&lt;br /&gt;
* [[Ghidra]] (plattformunabhängig)&lt;br /&gt;
* [[Interactive Disassembler|IDA Pro]]&lt;br /&gt;
* [[JEB decompiler]]&lt;br /&gt;
* [[radare2]]&lt;br /&gt;
* [[Binary Ninja]]&lt;br /&gt;
&lt;br /&gt;
== Rechtliche Aspekte ==&lt;br /&gt;
[[Proprietäre Software]] steht oft unter einer [[EULA]], die das Disassemblieren sowie [[Decompiler|Dekompilieren]] untersagt. Dies ist jedoch in Deutschland nur in seltenen Fällen rechtlich bindend. Auch ist Reverse Engineering zur Herstellung von Kompatibilität mit der Software Dritter ausdrücklich gesetzlich gesichert erlaubt – und damit nicht durch einen Lizenzvertrag zu unterbinden.&amp;lt;ref&amp;gt;In Deutschland gemäß {{§|69e|urhg|juris}} [[Gesetz über Urheberrecht und verwandte Schutzrechte|UrhG]] (Dekompilierung)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Tätigkeit des Disassemblierens ist bei [[urheberrecht]]lich geschützten Programmen allerdings in einigen Ländern durch gesetzliche Bestimmungen reglementiert, da das Disassemblieren die Möglichkeit eröffnet, den Code zu ändern und danach wieder in ein Programm zu assemblieren. So könnte z.&amp;amp;nbsp;B. von erfahrenen Assembler-Programmierern und [[Cracker (Computersicherheit)|Cracker]]n eine Passwortabfrage entfernt, eine aus lizenzrechtlichen Gründen abgeschaltete Funktion aktiviert, oder ein Virus unbemerkt in das Programm eingeschleust werden. Ausführliche Erläuterungen zu diesem Aspekt von Disassemblern und vergleichbaren Werkzeugen finden sich im Artikel [[Reverse Engineering]].&lt;br /&gt;
{{Rechtshinweis}}&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
Nahezu alle [[Debugger]], einige Programme zur Inspektion von Binärdateien (wie „objdump“ aus den [[GNU Binutils]]) sowie manche Assembler beinhalten einen Disassembler. Ein bekannter und häufig eingesetzter Disassembler ist [[The Interactive Disassembler|IDA]] von Ilfak Guilfanov, der Assemblercode strukturiert anzeigen kann.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang des Disassemblierens wird in der deutschsprachigen Fachliteratur [[synonym]] mit den Begriffen „entassemblieren“ oder nicht ganz korrekt mit „entkompilieren“ bezeichnet. Letzteres würde korrekterweise das Dekompilieren meinen.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.program-transformation.org/Transform/DisAssembly transformation Wiki on disassembly]&lt;br /&gt;
* [http://www.openrce.org/ OpenRCE: Various Disassembler Resources and Plug-ins]&lt;br /&gt;
* [http://www.thefreecountry.com/programming/disassemblers.shtml The free country]&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4817137-2|LCCN=|NDL=|VIAF=}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Assembler]]&lt;/div&gt;</summary>
		<author><name>193.28.249.20</name></author>
	</entry>
</feed>