Reverse Engineering

Unter Reverse Engineering versteht man die Analyse von Software mit dem Ziel, ihren inneren Aufbau, ihre Struktur zu erkennen und zuverstehen.

Zwei typische Anwendungsfälle sind:
- die Rekonstruktion des Quellcodes von Programmen, die nur alsBinärabbild vorliegen, z.B. Schadsoftware
- die Analyse von Kommunikationsprotokollen proprietärer Software

Im Bereich der Sicherheit dient Reverse Engineering zur:
- Analyse bösartiger Software (z.B. Trojaner, Viren, etc.)
- Analyse von Applikationen und Betriebssystemen mit dem Ziel Schwachstellen zu finden
- Analyse kryptografischer Algorithmen und deren Implementierung

Im Bereich der Softwareentwicklung:
- Herstellung der Interoperabilität zu proprietärer Software bzw. Protokollen
- Entwicklung konkurrierender Software
- Test der Robusheit und allgemeinen Qualität von Software

Rechtliche Aspekte:
Im Bezug auf Reverse Engineering gibt es große Unterschiede in den nationalen Gesetzgebungen. In Deutschland ist es zunächst erlaubt. Die Ausnahme bildet hier das Umgehen von Kopierschutzmechanismen, sog. "Cracking", im gewerblichen Bereich. (Die Regelungen für den privaten Bereich unterscheiden sich). In der Regel wird das Reverse Engineering durch die Lizenz verboten. Nicht verboten ist die Analyse von Protokollen.

Weiterführende Literatur:
Bruce Dang, Alexandre Gazet und Elias Bachaalany. Practical Reverse Engineering. Wiley, 2014
Eldad Eilam. Reversing: Secrets of Reverse Engineering. Wiley, 2005

Quelle:
http://www.informatik.htw-dresden.de/~robge/stti/vl/stti-01-einfuehrung.pdf