Definition

Reverse Engineering

Die Praxis des Reverse Engineering stammt ursprünglich aus eher traditionellen Industriezweigen und deren Produkten. Heutzutage wird diese Vorgehensweise selbstredend auch auf Computerhard- und software angewendet. So wird beim Software-Reverse-Engineering der Maschinencode eines Programms idealerweise in den Quellcode zurückverwandelt, in dem es einst geschrieben wurde.

Die Gründe für das Software-Reverse-Engineering können unterschiedlichster Natur sein. Beispielsweise, um festzustellen, wie das Programm Operationen ausführt, wenn man keinen Zugriff mehr auf den Quellcode hat, weil dieser vielleicht verloren ging. Oder auch, um einen Fehler im Programm zu korrigieren, wenn der Quellcode nicht mehr vorliegt. Im Bereich IT Security erfolgt diese Vorgehensweise häufig, um bösartige Inhalte in einem Programm zu identifizieren. Auch bei einer Portierung einer Software von einer Prozessorarchitektur auf einer andere kann ein Reverse Engineering erforderlich sein. Die lizenzierte Nutzung von Software verbietet ein einigen Fällen das Reverse Engineering ausdrücklich.

Jemand, der Reverse Engineering an Software durchführt, setzt üblicherweise auf verschiedene Werkzeuge, je nach Ausgangsmaterial und Einsatzweck, um ein Programm zu disassemblieren. So werden häufig Tools verwendet, um sich das Hexdump des Programms anzusehen, beziehungsweise das Programm im Hexadezimalformat auszugeben. Dies ist für Entwickler einfacher zu lesen, als ein Binärformat. Durch die Kenntnis der Bitmuster, die die Prozessorbefehle repräsentieren, sowie der Befehlslängen kann der Reverse Engineer unter Umständen bestimmte Teile eines Programms identifizieren, um zu sehen, wie sie funktionieren.

Ein weiteres wichtiges Werkzeug für das Reverse Engineering von Software ist ein Disassembler. Ein Disassembler liest den Binärcode des Programms und zeigt dann jede ausführbare Anweisung in einer für Entwickler lesbaren Textform an. Disassembler sind häufig Bestandteil von Debuggern, die für die Fehlersuche verwendet werden. Mit dem Gesamtpaket ist es dann auch leichter zwischen Programmteilen für die Disassemblierung und den Datenteilen eines Programms zu unterscheiden. Disassembler und Debugger werden auch von weniger redlichen Naturen eingesetzt, etwa um Code zu modifizieren, sich Zugang zu einem System zu verschaffen oder anderen Schaden anzurichten.

Beim Hardware-Reverse-Engineering wird ein Gerät in seine Bestandeile zerlegt, um zu sehen, wie es funktioniert. Dabei hängt die Vorgehensweise selbstredend sehr von der betroffenen Produktkategorie ab. Hardware-Reverse-Engineering erfordert häufig ein hohes Maß an Fachwissen und kann sehr kostspielig sein. In allen Fällen können von Reverse Engineering rechtliche Aspekte betroffen sein, die es zu beachten gilt.

Ein weiterer Aspekt des Reverse Engineering ist es 3D-Bilder von gefertigten Teilen zu erstellen, wenn keine Blaupausen oder CAD-Dateien mehr vorliegen, um diese Teile wiederherstellen zu können. So können mit 3D-Scans Bauteile relativ einfach so reproduziert werden. Anhand der 3D-Scans ist eine Flächenrückführung möglich, so dass sich wieder Gittermodelle beziehungsweise CAD-Dateien erstellen lassen.

Diese Definition wurde zuletzt im Dezember 2020 aktualisiert

Erfahren Sie mehr über Softwareentwicklung