Reverse Engineering
Reverse Engineering (engl., bedeutet: umgekehrt entwickeln, rekonstruieren, Kürzel: RE) bezeichnet den Vorgang, aus einem bestehenden, fertigen System oder einem meist industriell gefertigten Produkt durch Untersuchung der Strukturen, Zustände und Verhaltensweisen die Konstruktionselemente zu extrahieren. Aus dem fertigen Objekt wird somit wieder ein Plan gemacht. Im Gegensatz zu einer funktionellen Nachempfindung, die ebenso auf Analysen nach dem Black Box-Prinzip aufbauen kann, versucht das Reverse Engineering das vorliegende Objekt weitgehend exakt abzubilden. Es wird somit ermöglicht, eine 1:1-Kopie des Objekts anzufertigen und auf deren Basis Weiterentwicklung zu betreiben.
Reverse Engineering in der Wissenschaft
Reverse Engineering ist eine ganz reguläre, von Naturwissenschaftlern praktizierte, Analysemethode:
- Ein Genetiker versucht, den genetischen Bauplan der Zelle, die DNS-Sequenz zu entschlüsseln.
- Ein Biologe versucht, bestimmte Vorgänge in der Natur zu verstehen.
- Ein Physiker untersucht den Aufbau von Teilchen.
Sie alle betreiben also im weiteren Sinne ebenfalls Reverse Engineering.
Reverse Engineering in der EDV
Speziell bezogen auf Computer-Software wird darunter meistens einer der beiden folgenden Vorgänge verstanden:
- Die Rückgewinnung des Quellcodes oder einer vergleichbaren Beschreibung aus Binärcode, z.B. von einem ausführbaren Programm oder einer Programmbibliothek, etwa mit einem Disassembler (kann Teil eines Debuggers sein) oder einem Decompiler.
- Die Erschließung der Regeln eines Kommunikationsprotokolls aus der Beobachtung der Kommunikation, z.B. mit einem Sniffer.
Im ersten Falle werden oft Decompiler eingesetzt, die den Quellcode eines Programms weitestgehend automatisch aus seinem Binärcode zurückgewinnen. Ist dies nicht durchgehend möglich, so kann auch der aus dem Binärcode des Programms direkt mit einem Disassembler ermittelbare Maschinencode auch manuell analysiert werden, was allerdings eine merkliche Erschwernis bedeutet. Es kann i.d.R. nicht der komplette Programmquellcode ermittelt werden, da z. B. Kommentare nie, und lokale Objektnamen nur selten im verfügbaren Binärcode enthalten sind. Oft ist das Ergebnis trotz allem für den jeweiligen Zweck ausreichend, z. B. zur Verhaltensanalyse eines Softwaresystems oder als Hilfe beim Beheben eines Fehlers.
Ein bekanntes Produkt, das unter anderem durch Reverse Engineering eines Protokolls entwickelt wurde, ist die Client-Server-Software Samba für SMB-Netzwerke mit ihrer erarbeiteten Kompatibilität zum sogenannten Microsoft Networking Protocol, einem SMB-Derivat.
Reverse Engineering wird auch bei der objektorientierten Programmierung eingesetzt, bei der bei Vorlage eines entsprechenden Codes Modellinformationen erzeugt werden, welche dann in UML (Unified Modeling Language) dargestellt werden. Somit ist es auch möglich, bei bereits fortgeschrittenen Software-Projekten UML einzusetzen.
Rechtliche Aspekte
Viele Firmen untersagen das Reverse Engineering ihrer Produkte durch entsprechende Lizenzbedingungen. Die Analyse von Protokollen ist davon rechtlich nicht betroffen, weil dabei die Software selbst gar nicht Gegenstand der Untersuchung ist. Zudem sind solche Lizenzklauseln in vielen Ländern generell ungültig, da den Nutzern einer Sache gesetzlich das Recht zusteht, zur Überprüfung der Anwendungssicherheit (siehe auch Trojanisches Pferd) oder zur Fehlerbehebung ein von ihnen erworbenes Softwareprodukt einem Reverse Engineering zu unterziehen. Das reine Untersuchen von Dingen, die einem selbst gehören, darf man gegebenenfalls der Freiheit der Forschung zuordnen, so dass ebenfalls entsprechende Lizenzklauseln nicht greifen. Oftmals dienen solche Lizenzklauseln eher dem Zweck der Abschreckung und sind somit als einseitige Willensäußerung bzw. je nach Form als prophylaktische, einseitig vorgetragene Rechtsauffassung zu verstehen, die bei unabhängiger rechtlicher Prüfung möglicherweise keine Bestätigung und somit keinen weiteren Bestand haben wird. Im Softwarebereich spricht man oft von der im deutschen Raum generell zweifelhaften so genannten "Shrink Wrap License"-Vereinbarung.
Allerdings kann man sich ggf. per Vertragsstrafe zu Zahlungen im Fall der entdeckten Zuwiderhandlung verpflichtet haben. Dieser Form der individuellen Vertragsbindung kann man sich unter Umständen sehr wohl vollkommen legal unterworfen haben, wobei es hier meist um Prototypen oder Kleinserien geht, die noch erhebliche Mengen an Geschäftsgeheimnissen enthalten. Oftmals werden aus diesem Grund Rabatte zu Gunsten des Käufers eingeräumt (im Gegenzug zur verminderten Nutzungsmöglichkeit) oder es wird versucht, durch die oben angeführte Vertragsstrafe echte Risiken des Verkäufers (z. B. durch Geheimnisverrat) zumindest in gewissem Umfang abzudecken. Weiterhin findet bei sensiblen Objekten auch die Methode der zeitlich begrenzten leihweisen Überlassung statt.
Benutzt man das Ergebnis des Reverse Engineerings zum gewerblichen Nachbau, so wird man sich mit der großen Menge der gewerblichen Schutzrechte (z. B. Plagiat) in ähnlicher Weise konfrontiert sehen, so wie es auch bei Ergebnissen der ganz normalen eigenständigen Forschung und Entwicklung der Fall sein kann.
Literatur
Aufsätze
- Samuelson, Pamela; Scotchmer, Suzanne: The Law and Economics of Reverse Engineering, Yale Law Journal, Vol 111, No. 7, May 2002, pp. 1575-1664. [1].
- Introduction, p. 1577
- Reverse Engineering in traditional Manufacturing Industries, p. 1582
- Reverse Engineering in the Semiconductor Industry, p. 1595
- Reverse Engineering in the Computer Software Industry, p. 1607
- Reverse Engineering of Technically Protected Digital Content, p. 1630
- Reverse Engineering as a Policy Lever, p. 1649
- Conclusion, p. 1662
Bücher
- van Zuylen, H. J.: The REDO Compendium. Reverse Engineering for Software Maintenance, Chichester usw.: John Wiley & Sons, 1993, ISBN 0-471-93607-3.
Weblinks
- http://www.reverse-engineering.net (englisch)