Reverse Engineering ist die Kunst, die individuellen Dumping -, Maschinen -Level-Befehle , aus denen sich eine kompilierte Programm und nutzen sie, um ihren ursprünglichen Quellcode neu zu erstellen. Während jede kompilierte Programm Reverse Engineering werden kann , behalten die Byte- Code, der kompilierten Java- Programme macht mehrere Identifikationsmerkmale , die Reverse Engineering machen es viel leichter als andere kompilierten Code . Byte -Code
Java nicht direkt kompilieren in maschinenlesbaren Code , sondern in sogenannten " Byte-Code . " Der Programmierer verteilt diese Byte-Code , und wenn Endbenutzer das Programm starten , die Java Virtual Machine kompiliert den Bytecode in plattform-spezifischen Maschinen-Code . Während dies gibt Java den Vorteil, dass eine einzelne Quellcode eingestellt, um auf mehreren Rechnern arbeiten , bewahrt die Byte-Code mehrere beschreibende Merkmale des Quellcode , die es einfacher für Hacker , um den ursprünglichen Quellcode zu rekonstruieren machen .
Reverse Engineering
Hacker können eine Java-Anwendung die Byte-Code direkt zu lesen, mit dem " java.io.InputStream " Bibliothek. Mit diesem können sie sehen die Kernkomponenten und Byte- Code-Ebene Befehle, die diese bestimmte class-Datei darstellen . Hacker können dann verfolgen verschiedene Variablen über verschiedene Methoden, um schrittweise zu rekonstruieren die Ablaufsteuerung des Programms. Sobald Hacker dies tun , können sie den Quellcode der Anwendung für verschiedene bösartige Zwecke zu replizieren.
Angriffsziel
Nach Hacker Reverse Engineers ein bestimmtes Programm , gibt es mehrere Möglichkeiten, er kann dies ausnutzen, um Zugriff auf Maschinen, die das Programm ausführen zu gewinnen. Dazu gehören Schwachstellen ausnutzen , um das Programm Ausführen von Schadcode mit Benutzerberechtigung oder Ausführung eines "man in the middle". Im letzteren Fall würde der Hacker hinzufügen eigenen bösartigen Code der Anwendung Quellcode neu kompilieren , und legte sie auf das Internet unter dem Deckmantel des ursprünglichen Programms . Unwissenden Benutzer können dann die Anwendung herunterladen und direkt ausführen des Hackers Code.
Verhindern Reverse Engineering
Aufgrund der Natur von Java-Bytecode , ist es fast unmöglich zu stoppen jemand aus der Betrachtung der Kern -Byte-Code . Während Methoden wie Verschlüsselung ein gewisses Maß an Schutz bieten können , desto effektiver ist die Verschlüsselung ist, desto weniger plattformunabhängige das Programm wird . Programmierer können jedoch werfen Reverse Engineers mit ein paar Tricks Codierung . Dazu gehören Schreiben von Funktionen , die irrelevant für das Programm der tatsächlichen Ausführung , die abzuwerfen kann , die versuchen, das Programm Ingenieur umzukehren .