Decrittazione delle applicazioni Java crittografate utilizzando jhsdb (debugger hotspot)

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

Applicazione di esempio

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

Esporta un file jar eseguibile con Eclipse e utilizza 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 criptata

Innanzitutto, esegui il file jar crittografato, quindi trova la directory bin di JDK e dovresti riuscire a trovare un file jshdb.

1_nsxbwNJrGJB4mpzsQv55VA

Esegui jhsdb hsdb, apri HotSpot Debugger, se si trova sotto Windows, potrebbe essere necessario eseguire come amministratore, fare clic su File per selezionare Allega al processo HotSpot...

img

Usa ps aux | comando grep java nel sistema Linux e trova il processo pid tramite Task Manager nel sistema Windows. Inserisci il pid del processo nella finestra di dialogo sottostante.

img

Dopo averlo allegato con successo, fare clic su Strumenti-> Esplora classi

img

Il browser delle classi contiene informazioni su tutte le classi caricate, cerca com.example e potresti vedere tutte le classi in 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 il comando jhsdb in precedenza, è possibile vedere il file di classe generato

img

UsaLuyten Ojadxper aprire il file di classe e puoi vedere il codice decompilato

img