Entschlüsseln von verschlüsselten Java-Anwendungen mit jhsdb (Hotspot-Debugger)

Eine Lösung für den Schutz von Java-Code ist die Klassendateiverschlüsselung oder die JAR-Dateiverschlüsselung. Diese Art von Lösung lädt die verschlüsselte Klassendatei oder JAR-Datei über einen selbstdefinierten Loader, was aufgrund des vorhandenen Attach-Mechanismus der JVM nutzlos ist und mit den im JDK enthaltenen Tools leicht geknackt werden kann.

Beispielanwendung

Nachfolgend finden Sie eine Beispielanwendung mit einem einfachen Swing-Fenster und einer Schaltfläche. https://github.com/3-keys/test-swing-app

img

Anwendung verschlüsseln

Exportieren Sie eine ausführbare JAR-Datei mit Eclipse und verwenden Sie ein Verschlüsselungstool, um die JAR-Datei zu verschlüsseln. Nach der Verschlüsselung sieht die Struktur der JAR-Datei wie folgt aus:

img

test-swing-app.jar sind die verschlüsselten JAR-Dateidaten, die Launcher-Klassen sind die benutzerdefinierten Ladeklassen dieses Tools und das verschlüsselte JAR-Paket wird weiterhin über den Standardbefehl java -jar ausgeführt

Entschlüsseln Sie die verschlüsselte Anwendung

Führen Sie zuerst die verschlüsselte JAR-Datei aus, suchen Sie dann das bin-Verzeichnis des JDK und Sie sollten in der Lage sein, eine JSHDB-Datei zu finden.

1_nsxbwNJrGJB4mpzsQv55VA

Führen Sie jhsdb hsdb aus, öffnen Sie den HotSpot-Debugger. Wenn es unter Windows ist, müssen Sie möglicherweise als Administrator ausführen. Klicken Sie auf Datei, um An HotSpot-Prozess anhängen auszuwählen...

img

Verwenden Sie ps aux | Führen Sie im Linux-System den Befehl grep java aus und ermitteln Sie die Prozess-PID über den Task-Manager im Windows-System. Geben Sie die Prozess-PID in das Dialogfeld unten ein.

img

Nachdem Sie es erfolgreich angehängt haben, klicken Sie auf Tools->Class Browser

img

Der Klassenbrowser enthält Informationen zu allen geladenen Klassen. Suchen Sie nach com.example und Sie sehen möglicherweise alle Klassen unter com.example

img

Klicken Sie auf com.example.TestWindow @0x0000…. und klicken Sie dann auf „.class-Datei erstellen“

img

Wechseln Sie zum Verzeichnis, in dem der jhsdb-Befehl zuvor ausgeführt wurde, um die generierte Klassendatei anzuzeigen

img

VerwendenLuyten Oderjadxum die Klassendatei zu öffnen und den dekompilierten Code zu sehen

img