Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Disassembler – Wikipedia
Disassembler – Wikipedia
aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Disassemblieren)

Ein Disassembler ist ein Computerprogramm, das die binär kodierte Maschinensprache eines ausführbaren Programmes in eine für Menschen lesbarere Assemblersprache umwandelt. Seine Funktionalität ist der eines Assemblers entgegengesetzt.

Funktionsweise

[Bearbeiten | Quelltext bearbeiten]

Zu jedem Prozessorbefehl existiert ein entsprechender Befehl in Assemblersprache, ein Mnemonic. Auch die einzelnen Argumente der Prozessorbefehle, wie Registernummern oder Speicheradressen, 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.

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, Labels und Kommentare sind vom Programmierer gewählt und haben daher zumindest keine direkte, d. h. eindeutig umkehrbare Entsprechung im Maschinencode, was die exakte textliche Rekonstruktion unmöglich macht. Bei einem Programm, das in einer höheren Programmiersprache geschrieben wurde, hat der Compiler meist verschiedene Optimierungen vorgenommen, welche die Programmausführung beschleunigen, aber den Maschinencode komplexer machen.

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 Sprungmarken, Unterprogramme, Variablen, Konstanten sowie Kommentare manuell verfeinert und zur Optimierung in nachfolgenden Durchläufen vorgegeben werden.

Nutzen

[Bearbeiten | Quelltext bearbeiten]

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.

Disassembler

[Bearbeiten | Quelltext bearbeiten]

Eine Liste von Programmen, die verschiedene Modelle und Dateiformate verarbeiten können. Zum Teil auf GitHub einsehbar.

  • Ghidra (plattformunabhängig)
  • IDA Pro
  • JEB decompiler
  • radare2
  • Binary Ninja

Rechtliche Aspekte

[Bearbeiten | Quelltext bearbeiten]

Proprietäre Software steht oft unter einer EULA, die das Disassemblieren sowie 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.[1]

Die Tätigkeit des Disassemblierens ist bei urheberrechtlich 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. B. von erfahrenen Assembler-Programmierern und Crackern 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.

Bitte den Hinweis zu Rechtsthemen beachten!

Sonstiges

[Bearbeiten | Quelltext bearbeiten]

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 IDA von Ilfak Guilfanov, der Assemblercode strukturiert anzeigen kann.

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.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ In Deutschland gemäß § 69e UrhG (Dekompilierung)

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • transformation Wiki on disassembly
  • OpenRCE: Various Disassembler Resources and Plug-ins
  • The free country
Normdaten (Sachbegriff): GND: 4817137-2 (GND Explorer, lobid, OGND, AKS)
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Disassembler&oldid=241198758“
Kategorien:
  • Programmierwerkzeug
  • Assembler

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id