Verschlüsselte Java-Anwendungen mit jhsdb (Hotspot Debugger) knacken
Eine Lösung zum Schutz von Java-Code ist die Verschlüsselung von Klassendateien oder JAR-Dateien. Diese Art von Lösung lädt die verschlüsselte Klassendatei oder JAR-Datei über einen selbst definierten Loader, was aufgrund des vorhandenen Attach-Mechanismus der JVM nutzlos ist und leicht mit den im JDK enthaltenen Tools geknackt werden kann.
Beispielanwendung
Nachfolgend ist eine Beispielanwendung mit einem einfachen Swing-Fenster und einer Schaltfläche. https://github.com/3-keys/test-swing-app

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 ist die Struktur der JAR-Datei wie folgt:

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 Standard-Befehl java -jar ausgeführt
Die verschlüsselte Anwendung knacken
Führen Sie zunächst die verschlüsselte JAR-Datei aus, suchen Sie dann das bin-Verzeichnis des JDK und Sie sollten eine jshdb-Datei finden.

Führen Sie jhsdb hsdb aus, öffnen Sie den HotSpot Debugger. Unter Windows müssen Sie möglicherweise als Administrator ausführen. Klicken Sie auf Datei und wählen Sie "Attach to HotSpot process..."

Verwenden Sie den Befehl ps aux | grep java unter Linux, und finden Sie die Prozess-PID über den Task-Manager unter Windows. Geben Sie die Prozess-PID im folgenden Dialogfeld ein.

Klicken Sie nach erfolgreichem Anhängen auf Tools->Class Browser

Der Class Browser enthält Informationen über alle geladenen Klassen. Suchen Sie nach com.example und Sie sehen alle Klassen unter com.example

Klicken Sie auf com.example.TestWindow @0x0000.... und dann auf "Create .class File"

Wechseln Sie in das Verzeichnis, in dem der jhsdb-Befehl zuvor ausgeführt wurde. Sie sehen die generierte Klassendatei

Verwenden Sie Luyten oder jadx, um die Klassendatei zu öffnen, und Sie sehen den dekompilierten Code
