Was ist Reverse Engineering?
Was ist Reverse Engineering?
Reverse Engineering (RE) kommt ursprünglich aus dem Maschinenbau. Dabei wird zur Konkurrenzanalyse und zur Optimierung des eigenen Produkts, das Konkurrenzprodukt zerlegt, um dessen Aufbau, Struktur und Funktion zu verstehen.Heutzutage wird die Methode auch im Bereich der Softwareentwicklung verwendet. Allerdings in den meisten Fällen zur Produktanalyse, Fehleroptimierung und Qualitätsprüfung der eigenen Software.
Von Unternehmen wird Reverse Engineering vor allem eingesetzt, um Prozesse oder Produkte zu optimieren sowie Fehler und Best Practices zu identifizieren.
Verwandte Begriffe:
- Forward Engineering ist der normale Prozess der Softwareentwicklung, bzw. der Produktentwicklung. Dieser startet bei den Anforderungen, über den Entwurf, zu einem Prototyp bis hin zum fertigen Produkt. Sozusagen das Gegenteil von Reverse Engineering.
- Redokumentation ist ein Teilbereich beim Reverse Engineering. Dabei geht es darum, verlorene oder nicht vorhandene Dokumentation über das System wiederherzustellen.
- Design Recovery ist ebenfalls Teil des Reverse Engineering. Ziel ist es, alle Informationen zu reproduzieren, die man benötigt, um zu verstehen, was ein Programm tut, wie es und warum es dies tut.
Wo kommt Reverse Engineering zum Einsatz?
Reverse Engineering kommt in verschiedensten Branchen zum Einsatz. Besonders im produzierenden Gewerbe werden die Produkte der Konkurrenz genau analysiert und die gewonnenen Erkenntnisse für die eigene Produktentwicklung genutzt. Doch auch für die Softwareentwicklung und in der Prozessoptimierung kommt es zum Einsatz:Hardware Reverse Engineering
Hierbei wird Hardware in die einzelnen noch so kleinen Bestandteile auseinander gebaut und jedes Bauteil und die Funktionalität der einzelnen Teile genau analysiert. Ziel ist es, Funktionsweisen und Best Practices zu verstehen und für das eigene Produkt zu nutzen. Zudem können Schwächen bei der Konkurrenz identifiziert und beim eigenen Produkt vermieden werden.Bei der Analyse des eigenen Produkts kann dadurch zudem ein Konfigurationsaudit durchgeführt werden. Also eine Prüfung, ob sich die Produkteigenschaften mit den tatsächlich geplanten Eigenschaften decken.
Software Reverse Engineering
Auch beim Software RE wird Fremdsoftware genauer geprüft, häufig wird es jedoch für die Prüfung eigener Softwarelösungen verwendet. Bezogen auf Software versteht man unter RE meistens einen der folgenden Prozesse:Rückgewinnung des Quellcodes
Dafür wird in der Regel ein Decompiler , ein Tool, das den Quellcode aus dem Binärcode in für Menschen lesbare Sprache übersetzt, verwendet. Ist das nicht möglich, kann der Maschinencode zudem mit einem Disassembler, der ebenfalls Binärcode in lesebaren Code umwandelt, manuell analysiert werden, was allerdings zeitaufwändiger ist.Meist ist es jedoch nicht möglich, den Quellcode vollständig zu rekonstruieren. Für die meisten Entwickler ist jedoch das Verstehen der Idee und Programmierlogik wichtiger als der Code an sich.
Verstehen der Regeln des Kommunikationsprotokolls
Die Regeln des Kommunikationsprotokolls nachzuvollziehen ist zum Beispiel wichtig, um ein gut funktionierendes Netzwerk sicherzustellen. Mit sogenannter Sniffer Software kann dabei der Datenverkehr innerhalb eines Rechnernetzwerks analysiert und Verbindungsprobleme oder Sicherheitslücken aufgedeckt werden.Die nachträgliche Modellerstellung ausgehend vom Quellcode
Die nachträgliche Modellerstellung ist vor allem für objektorientierte Programmierung interessant. Der rekonstruierte Quellcode einer Software wird genutzt, um nachträglich einen Entwurf bzw. ein Modell der Software zu erstellen, das dann weiterbearbeitet werden kann.Was ist objektorientierte Programmierung?
Objektorientierte Programmierung ist ein Programmierstil, der dem menschlichen Denken sehr ähnlich ist. In der Sprache wird jedes Element durch „Objekte“ mit bestimmten Eigenschaften und Funktionen beschrieben und kann anhand dieser in verschiedene Klassen unterteilt werden.
Business Process Reverse Engineering
Auch für Unternehmensprozesse kann Reverse Engineering angewendet werden. Dabei wird ein bestehender Prozess auf seine einzelnen kleinen Prozessschritte heruntergebrochen und diese analysiert. Regelmäßiges RE der Prozesse hilft Unternehmen, sich schnell an Veränderungen anzupassen und wettbewerbsfähig zu bleiben.Insbesondere beim Sales Funnel lohnt es sich, diesen immer wieder rückwärts zu engineeren, um Optimierungspotenziale aufzudecken und auf Veränderungen zu reagieren.
Was bringt Reverse Engineering?
Im Bereich Hardware
Im Hardware Bereich liegen die Vorteile von RE auf der Hand: Die Produkte der Konkurrenz werden bis ins kleine Detail analysiert, sowie Bau- und Funktionsweisen hinterfragt. Positives kann für die zukünftige eigene Produktentwicklung genutzt werden. Fehler, die die Konkurrenz macht, werden auf diese Weise vermieden.Im Bereich Software
Beim Software RE sind, wie oben bereits geschrieben, die Anwendungsbereiche weiter gefächert. Deshalb hat Reverse Engineering auch für verschiedenste Bereiche Vorteile:- Qualitätsmanagement: Prüfung der Funktionen der eigenen Software
- Weiterentwicklung und Optimierung der eigenen Software oder, wenn möglich, der genutzten Software von Drittanbietern. Das ist nicht immer oder erlaubt, manche Softwarehersteller stellen dazu jedoch ihren Code oder sogenannte Low-Code-Tools zur Verfügung. Mit Low-Code kann man einige Änderungen an der Software ohne tiefergreifende Programmierkenntnisse vornehmen.
- Ermitteln von Schwach- und Schadstellen, wie Viren oder Trojanern
- Untersuchung von Netzwerkkommunikationsprotokollen zur Verbesserung der Performance
- Ermitteln von Softwarefehlern
- Kompatibilitäts-Optimierung mit Software oder Plattformen von Drittanbietern
- Untersuchung der Programmierlogik für das eigene Verständnis
- Instandhaltung von Abandonware
Als Abandonware werden Softwarelösungen bezeichnet, die ein Hersteller nicht mehr vertreibt und für die er keine technische Unterstützung mehr anbietet.
Im Bereich Business Process
Je nach Prozess im Unternehmen, der rückwärts betrachtet wird, kann Reverse Engineering verschiedene Vorteile haben:- Neue Blickwinkel auf den eigenen finden und „Betriebsblindheit verhindern“
- Fehlerquellen identifizieren
- Optimierungspotenziale aufdecken
- Fehler bei anderen Prozessen in anderen Unternehmen identifizieren und im eigenen Prozess verhindern
- Best Practice Ansätze bei anderen Unternehmen finden