Zum Inhalt springen

Reverse Engineering

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 14. September 2003 um 20:19 Uhr durch 217.4.13.70 (Diskussion) (+en). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Reverse Engineering bezeichnet den Vorgang, aus einem bestehenden, fertigen System oder Produkt durch Untersuchung der sichtbaren Strukturen oder beobachtbaren Verhaltensweisen die Konstruktionspläne zu extrahieren.

Insbesondere bezogen auf Software ist damit meistens eine der beiden folgenden Bedeutungen gemeint:

  1. Die Rückgewinnung des Quellcodes aus dem Binärcode eines ausführbaren Programmes oder einer Programmbibliothek
  2. Die Erschließung eines Kommunikationsprotokolls aus der Beobachtung der Kommunikation

Im ersten Falle werden oft Decompiler eingesetzt, die den Quellcode eines Programms automatisch aus seinem Binärcode extrahieren. Ist dies nicht möglich, kann auch der aus dem Binärcode des Programms direkt ermittelbare Maschinencode manuell analysiert werden, was allerdings mit erheblichem Aufwand verbunden ist. In beiden Fällen kann i. d. R. nicht der komplette Programmquellcode ermittelt werden, weil Kommentare und lokale Objektnamen in den meisten Fällen nicht im Binärcode enthalten sind. Oft ist das Ergebnis jedoch trotzdem für den jeweiligen Zweck ausreichend, z. B. zum Beheben eines Fehlers oder zur Verhaltensanalyse eines Softwaresystems.

Viele Softwarefirmen verbieten in ihren Lizenzbedingungen, ihre Produkte einem Reverse Engineering zu unterziehen. Davon ist rechtlich jedoch nur die erste Form betroffen, da die zweite Form nicht direkt die Analyse eines Softwaresystems zum Gegenstand hat. Anstatt dessen wird die Kommunikation des Systems mit der Außenwelt analysiert, so dass diese Art des Reverse-Engineering nicht unter die jeweiligen Lizenzklauseln fällt. Zudem sind diese Lizenzklauseln in vielen Ländern ungültig, da den Nutzern der Software hier zur Überprüfung der Anwendungssicherheit oder zur Fehlerbehebung vom Gesetzgeber das Recht zugestanden wird, ein von Ihnen erworbenens Softwareprodukt einem Reverse-Engineering zu unterziehen.