Disassembler

Disassembler

Ein Disassembler ist ein Werkzeug, das ein fertiges Computerprogramm aus Zahlencode zurück in lesbare Maschinenbefehle übersetzt. So kann man nachvollziehen, was ein Programm tut, auch wenn der ursprüngliche Programmtext fehlt.

Programme werden von Menschen in einer Programmiersprache geschrieben, also in Text, den man lesen kann. Bevor ein Computer sie ausführt, werden sie meist in reine Zahlen übersetzt. Diese Zahlenform versteht der Prozessor, der Rechenchip im Gerät, aber kein Mensch. Ein Disassembler geht diesen Schritt ein Stück weit zurück: Er liest die Zahlen und schreibt sie als Liste von Einzelbefehlen auf, etwa „addiere“, „vergleiche“ oder „springe“. Diese Befehlsliste nennt man Assembler-Code. Sie ist immer noch sehr technisch, aber grundsätzlich lesbar.

Was man aus fremdem Programmcode herausholen kann

Bei sehr vielen Programmen bekommt man nur die fertige Datei, nicht den geschriebenen Text dahinter. Windows, Spiele oder die Software in einem Auto liefert niemand als lesbaren Quelltext aus. Wer trotzdem wissen will, was so ein Programm genau tut, hat nur die Zahlen. Ein Disassembler ist dann der erste Schritt zu einer Antwort.

Der wichtigste Einsatzbereich ist die IT-Sicherheit. Wenn ein Virus auf einem Rechner gefunden wird, existiert kein Handbuch dazu. Fachleute zerlegen die Datei, um zu sehen, welche Dateien sie verändert und mit welchem Server sie spricht. Erst daraus entsteht eine Schutzregel für Virenscanner.

Es gibt aber auch harmlosere Gründe. Firmen prüfen so, ob ein Zulieferer wirklich das geliefert hat, was im Vertrag steht. Und alte Software, deren Quelltext seit Jahrzehnten verschollen ist, lässt sich auf diesem Weg reparieren oder auf neue Geräte übertragen.

Vom Zahlenstrom zur Befehlsliste

Jeder Prozessortyp hat einen festen Katalog von Befehlen. Jedem Befehl ist eine bestimmte Zahl zugeordnet. Der Disassembler kennt diesen Katalog und schlägt darin nach. Er liest die Datei von vorne nach hinten, erkennt eine Zahl als Befehl und setzt dafür ein Kürzel wie „MOV“ oder „JMP“ ein. Danach liest er weiter an der Stelle, an der der nächste Befehl beginnt.

Das klingt einfacher, als es ist. In derselben Datei stehen auch Daten, also etwa Texte oder Bilder, und diese sehen ebenfalls nur nach Zahlen aus. Beginnt das Werkzeug an der falschen Stelle zu lesen, entsteht sinnloser Unsinn, der trotzdem wie Programmcode aussieht. Gute Disassembler folgen deshalb dem tatsächlichen Ablauf des Programms und raten nicht einfach von oben nach unten.

Ein wichtiger Unterschied: Ein Decompiler versucht, aus derselben Datei wieder etwas herzustellen, das nach der ursprünglichen Programmiersprache aussieht. Das ist bequemer zu lesen, aber ungenauer. Der Disassembler bleibt nah an dem, was der Prozessor wirklich ausführt. Verloren gehen in beiden Fällen die Namen von Variablen und alle Kommentare des Programmierers, denn die stehen nie in der fertigen Datei.

Werkzeuge, Streitfälle und KI-Hilfe

Bekannte Programme dieser Art sind Ghidra, das der US-Geheimdienst NSA veröffentlicht hat, sowie IDA Pro und das freie Radare2. Ghidra ist kostenlos und wird an Universitäten und in Sicherheitsfirmen benutzt. In den Nachrichten tauchen solche Werkzeuge auf, wenn eine große Schadsoftware analysiert wurde oder wenn jemand eine Sicherheitslücke in einem verbreiteten Gerät gefunden hat.

Auch rechtlich ist das Thema präsent. Das Zerlegen fremder Software ist in Deutschland nur in engen Grenzen erlaubt, etwa um ein eigenes Programm kompatibel zu machen. Viele Lizenzverträge verbieten es zusätzlich. Für Sicherheitsforschung gibt es Ausnahmen, um die immer wieder gestritten wird.

Neu ist die Kombination mit Sprachmodellen, also KI-Systemen, die Text erzeugen. Sie bekommen die Befehlsliste vorgelegt und formulieren eine Vermutung, was der Abschnitt bewirkt. Das spart Zeit, ist aber nicht zuverlässig. Die Modelle erfinden gelegentlich plausible Erklärungen, die schlicht falsch sind. Die Prüfung bleibt deshalb Aufgabe von Menschen.

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.