Wikipedia · einfach zusammengefasst · Stand
Reverse Engineering
Zur Überprüfung der Anwendungssicherheit und zur Fehlerbehebung sind Analysen und sogar Eingriffe in Software gesetzlich legal. Rechtlich einwandfrei sind …
Inhalt6 Abschnitte
Grundidee und Zweck
Reverse Engineering (RE, auch Nachkonstruktion) bedeutet, aus einem vorhandenen fertigen System oder industriell hergestellten Produkt durch Untersuchung seiner Strukturen, Zustände und Verhaltensweisen die Konstruktionselemente zu gewinnen. Aus dem fertigen Objekt wird also wieder ein Plan erstellt. Ziel ist nicht nur eine funktionelle Nachempfindung nach dem Black-Box-Prinzip, sondern eine möglichst genaue Abbildung des vorhandenen Objekts.
Häufig wird zur Überprüfung der gewonnenen Erkenntnisse eine 1:1-Kopie hergestellt. Auf dieser Grundlage kann ein Produkt oder System anschließend weiterentwickelt, repariert, dokumentiert oder in andere Systeme integriert werden. Reverse Engineering ist deshalb in vielen Bereichen wichtig, wenn Pläne fehlen, Originalhersteller nicht mehr verfügbar sind, alte Systeme weiter genutzt werden müssen oder technische Informationen nicht offenliegen.
Hardware und Software
Bei Hardware kann Reverse Engineering dazu dienen, ein Gerät oder einen Chip so genau zu untersuchen, dass seine Funktionsweise und seine technische Grundlage verstanden werden. In der DDR wurden dafür zum Beispiel Chip-Dies lagenweise abgetragen, etwa durch Schleifen oder selektives Ätzen. Die einzelnen Ebenen wurden anschließend mit dem Mikroskop untersucht. So entstand ein Z80-Nachbau als U880.
Bei Software meint Reverse Engineering mehrere Verfahren. Dazu gehört die Rückgewinnung von Quellcode oder einer vergleichbaren Beschreibung aus Maschinencode, zum Beispiel mit einem Disassembler oder Decompiler. Ein Disassembler übersetzt Maschinencode in eine für Menschen besser lesbare maschinennahe Form; ein Decompiler versucht, daraus wieder höheren Quellcode zu erzeugen. Außerdem kann man den Programmablauf und die Kommunikation mit der Systemumgebung in einem Debugger untersuchen oder Kommunikationsprotokolle durch Beobachtung mit einem Sniffer erschließen.
Die vollständige Wiederherstellung von Quellcode ist meist nicht möglich, weil Kommentare nie und lokale Objektnamen nur selten im Binärcode enthalten sind. Manchmal finden sich jedoch Debug-Symbole im fertigen Produkt, etwa beim Spiel Super Mario 64. Oft reicht das Ergebnis trotzdem aus, zum Beispiel zur Verhaltensanalyse oder Fehlerbehebung.
Reverse Engineering wird auch genutzt, um Gerätetreiber für freie Betriebssysteme zu schreiben, wenn die Konstruktion eines Geräts ein Herstellergeheimnis ist. Dabei werden Geräte geöffnet, untersucht oder ihre Kommunikation während der Bedienung abgehört. Weitere Beispiele sind Quelltext-Rekonstruktionen alter Computerspiele wie Another World für Portierungen sowie Fälle, in denen Hersteller ihre eigenen alten Produkte analysieren müssen, weil kein ursprünglicher Quellcode oder kein Original mehr vorhanden ist. Microsoft entfernte zum Beispiel eine Sicherheitslücke im zu Office gehörenden Formeleditor durch Patchen der binären Programmdatei.
Neuere Forschungsansätze ergänzen klassische Verfahren durch KI-basierte Methoden. Große Mengen an Quell- oder Binärcode werden genutzt, um Modelle zu trainieren, die Muster, Strukturen oder funktionale Gemeinsamkeiten erkennen. Solche Verfahren können komplexe Systeme charakterisieren, Entwicklungsstile vergleichen oder Konstruktionsprinzipien aus vorhandenen Softwareartefakten ableiten.
Maschinenbau und Fertigung
Im Maschinenbau ist Reverse Engineering durch preisgünstige hochauflösende 3D-Scanner, eng mit CAD-Systemen verbundene Software und leistungsfähige Computer besonders wichtig geworden. CAD bedeutet computergestütztes Konstruieren. Grundsätzlich bestimmt beim Reverse Engineering das Ziel den Weg. Dabei unterscheidet man technische Anforderungen und fertigungstechnische Anforderungen.
Zu den technischen Anforderungen gehört, wie ein Bauteil funktioniert: welche Kräfte es überträgt, bei welchen Temperaturen es eingesetzt wird, welchem Abrieb es unterliegt und welche weiteren Belastungen es aushalten muss. Bei historischen Systemen können neben einem vorhandenen physischen Objekt auch alte Skizzen und Fotos genutzt werden. Die Summe dieser Anforderungen ist der Maßstab für das Ergebnis.
Fertigungstechnische Anforderungen betreffen die Herstellung. Es ist nicht immer wirtschaftlich, ein neues Bauteil genauso herzustellen wie das Original. Bei kleinen Stückzahlen kann es zum Beispiel sinnvoller sein, ein Bauteil zu fräsen statt eine Gussform herzustellen, wenn die technischen Anforderungen das erlauben.
Ein einfacher Prozess ist „Scan to Print“. Nach der Zieldefinition wird das Bauteil mit einem 3D-Scanner oder industriellen Computer-Tomographen vollständig erfasst. Danach muss das 3D-Modell meist nachbearbeitet werden: fehlende Bereiche werden ergänzt, das Flächenmodell muss „wasserdicht“ sein, also verknüpfte Kanten, einheitliche Flächenorientierungen und keine Löcher besitzen. Für den Druck können Stützstrukturen nötig sein. Dieses Verfahren eignet sich vor allem für einfache Bauteile mit geringen Anforderungen, etwa nicht mehr verfügbare Ersatzteile.
Für Reparaturen komplexer Bauteile, etwa in Kraftwerken, Walzwerken oder Verdichtern, werden Bauteile vermessen und oft gescannt. Die Daten werden in ein parametrisches CAD-Modell umgewandelt. Wegen Verschleiß und Verzunderung muss erkannt werden, welche Maße das Originalteil ursprünglich hatte. Das Verfahren wird besonders bei Turbinenschaufeln sowie Pumpen- und Turbinenkanälen genutzt. Durch moderne Materialien, Beschichtungen und Bearbeitungsverfahren können die neuen Teile sogar besser als das Original sein. In regulierten Bereichen wie Luftfahrt, Pharma- oder Lebensmittelindustrie müssen solche Produkte von der zuständigen Behörde zugelassen werden.
Spezielle technische Anwendungen
Für eine Serienproduktion wird nach dem Reverse Engineering ein CAD-Modell erstellt und als natives Teil in das CAD-System des Herstellers übertragen. Dadurch können Konstrukteure das Bauteil ohne Spezialsoftware weiterentwickeln.
Reverse-Forward Engineering wird eingesetzt, wenn zwei Bauteile sehr genau zusammenpassen müssen. Ein erstes Bauteil entsteht zum Beispiel durch Gießen oder Schmieden, wobei die Toleranzen nur begrenzt beeinflusst werden können. Das zweite Bauteil wird meist auf einer CNC-Maschine hergestellt und so angepasst, dass es die Toleranzen des ersten Bauteils ausgleicht.
Bei Designmodellen, etwa Lehm-Modellen mit besonders guten Oberflächen, wird das Modell mit einem 3D-Scanner erfasst und anschließend mit C2-Flächen nachmodelliert. Noch heute werden Autokarosserien als Lehm-Modelle erstellt.
Für Systemintegration werden 3D-Daten verwendet, um den Ist-Zustand eines bestehenden Systems zu dokumentieren und ein neues System einzupassen. In der Luftfahrtindustrie wird zum Beispiel häufig eine Kabine gescannt, um eine neue Ausstattungsvariante zu planen.
Reverse Engineering kann außerdem beim Übergang von dokumentenbasierter Produktentwicklung zu Model-based Systems Engineering (MBSE) helfen. Dabei wird aus einem vorhandenen Produkt und seiner herkömmlichen Dokumentation ein Systemmodell abgeleitet, das für Weiterentwicklungen und Nachfolgeprodukte genutzt werden kann.
Weitere Anwendungen sind die Offline-Programmierung von Roboterbahnen für Beschichtungen, Wachskerne für Gussprozesse in der Schmuckindustrie, das Skalieren von Kunstplastiken, die Anpassung von Orthesen und Prothesen sowie individuell angepasste Implantate aus Tomographie- und 3D-Druck-Daten.
Qualitätssicherung und Lebenswissenschaften
Für hochwertiges Reverse Engineering ist Qualitätssicherung sinnvoll. Sie kann an drei Punkten erfolgen. Wenn mehrere vermeintlich identische Objekte vorhanden sind, etwa Turbinenschaufeln, werden mehrere Scans verglichen. Sind die Objekte tatsächlich identisch, werden die Scans vermittelt und als Grundlage genutzt. Nach dem Reverse Engineering wird das neue CAD-Modell mit den Scandaten verglichen; ein Bericht zeigt die Abweichungen. Nach der Fertigung wird das neue physische Modell gescannt und mit dem CAD-Modell verglichen.
In der Chemietechnik und Arzneimittelforschung wird Reverse Engineering für die Generikaentwicklung oder andere Formen des Wissenstransfers eingesetzt. Dies trug beispielsweise zum Aufstieg der Pharmaziebranche Indiens bei. Im März 2021 rekonstruierten Forschende der Stanford-Universität die Sequenzen der mRNA-Impfstoffe BNT-162b2 von BioNTech/Pfizer und MRNA-1273 von Moderna per Reverse Engineering und veröffentlichten sie auf GitHub.
In der Systembiologie heißt Reverse Engineering auch Netzwerkinferenz. Gemeint ist die Identifikation biologischer Netzwerke, besonders Genregulationsnetzwerke. Dafür werden gemessene biomedizinische oder molekularbiologische Daten, insbesondere Daten aus der Genexpressionsanalyse, sowie molekularbiologisches Vorwissen genutzt.
Rechtliche Aspekte
Seit April 2019 ist die Erlangung eines Geschäftsgeheimnisses durch Untersuchen, Rückbauen oder Testen eines Produkts oder Gegenstands nach § 3 Abs. 1 Nr. 2 des Gesetzes zum Schutz von Geschäftsgeheimnissen (GeschGehG) grundsätzlich zulässig.
Bei Software versuchen viele Firmen, Reverse Engineering durch Lizenzbedingungen zu verbieten. In Deutschland sind solche Bedingungen laut Artikel jedoch ungültig. Nach § 69d Abs. 3 UrhG und § 69a Abs. 2 UrhG sind die durch Reverse Engineering berührten Rechtsgüter anders als bei Nachbau oder Raubkopien nicht vom Urheberrecht geschützt. Analysen und sogar Eingriffe in Software können zur Überprüfung der Anwendungssicherheit und zur Fehlerbehebung legal sein. Die Analyse von Protokollen ist davon nicht betroffen, weil dabei nicht die Software selbst untersucht wird.
Trotzdem können individuelle Vertragsbindungen, etwa Vertragsstrafen bei Prototypen oder Kleinserien mit Geschäftsgeheimnissen, rechtliche Folgen haben. Außerdem können Verschlüsselung und Verschleierung Reverse Engineering erschweren. In den USA wurde 2001 Dmitry Sklyarov nach dem DMCA wegen Dekodierung geschützter Textdokumente angeklagt. 2003 ließ der US-Kongress zeitlich begrenzte Ausnahmen zu, unter anderem für Archivierung. 2006 stimmte die Library of Congress einer dauerhaften Ausnahme zu, die das Umgehen eines Kopierschutzes bei nicht mehr verkaufter oder unterstützter Software erlaubt.
Beim technischen Nachbau können Patente, Plagiatsfragen und Urheberrechte eine Rolle spielen. Originalhersteller bekämpfen Nachbauten oft rechtlich und schützen sich durch Verschleierung, verdeckte Produktkennzeichnung oder entfernte Bauteilbezeichnungen. Reverse Engineering unterscheidet sich vom technischen Re-Engineering: Beim Re-Engineering liegt technische Dokumentation, etwa durch Open-Source-Hardware, vor, und die Funktionalität wird mit neueren Mitteln nachgebildet oder erweitert.