Cracking di applicazioni Java crittografate tramite jhsdb (debugger hotspot)

Una soluzione per la protezione del codice Java è la crittografia dei file di classe o dei file jar. Questo tipo di soluzione carica il file di classe o il file jar crittografato tramite un loader autodefinito, che è inutile a causa dell'esistenza del meccanismo Attach della JVM e può essere facilmente violato con gli strumenti forniti con il JDK.

Esempio di domanda

Di seguito è riportato un esempio di applicazione con una semplice finestra oscillante e un pulsante. https://github.com/3-keys/test-swing-app

img

Crittografa applicazione

Esportare un file jar eseguibile con Eclipse e utilizzare uno strumento di crittografia per crittografare il file jar. Dopo la crittografia, la struttura del file jar è la seguente:

img

test-swing-app.jar sono i dati del file jar crittografati, le classi Launcher sono le classi di caricamento personalizzate di questo strumento e il pacchetto jar crittografato viene ancora eseguito tramite il comando java -jar standard

Decifrare l'applicazione crittografata

Per prima cosa, esegui il file jar crittografato, quindi trova la directory bin di JDK e dovresti essere in grado di trovare un file jshdb.

1_nsxbwNJrGJB4mpzsQv55VA

Eseguire jhsdb hsdb, aprire HotSpot Debugger, se è su Windows, potrebbe essere necessario eseguirlo come amministratore, fare clic su File per selezionare Collega al processo HotSpot…,

img

Utilizzare il comando ps aux | grep java su Linux e trovare il pid del processo tramite Task Manager su Windows. Inserire il pid del processo nella finestra di dialogo sottostante.

img

Dopo averlo collegato correttamente, fare clic su Strumenti->Browser di classe

img

Il browser delle classi contiene informazioni su tutte le classi caricate, cerca com.example e potresti vedere tutte le classi sotto com.example

img

Fare clic su com.example.TestWindow @0x0000…. e quindi fare clic su "Crea file .class"

img

cd nella directory in cui è stato eseguito in precedenza il comando jhsdb, puoi vedere il file di classe generato

img

Utilizzo Luyten O jadx per aprire il file di classe e puoi vedere il codice decompilato

img