Cracking des applications Java chiffrées à l'aide de jhsdb (débogueur hotspot)

Une solution pour la protection du code Java consiste à chiffrer les fichiers de classe ou les fichiers jar. Ce type de solution charge le fichier de classe chiffré ou le fichier jar via un chargeur auto-défini, ce qui est inutile en raison de l'existence du mécanisme Attach de la JVM et peut être facilement craqué avec les outils fournis avec le JDK.

Application d'exemple

Vous trouverez ci-dessous un exemple d'application avec une simple fenêtre battante et un bouton. https://github.com/3-keys/test-swing-app

img

Application de chiffrement

Exportez un fichier jar exécutable avec Eclipse et utilisez un outil de chiffrement pour chiffrer le fichier jar. Après chiffrement, la structure du fichier jar est la suivante :

img

test-swing-app.jar correspond aux données du fichier jar crypté, les classes Launcher sont les classes de chargement personnalisées de cet outil et le package jar crypté est toujours exécuté via la commande standard java -jar

Craquez l'application cryptée

Tout d’abord, exécutez le fichier jar crypté, puis recherchez le répertoire bin du JDK et vous devriez pouvoir trouver un fichier jshdb.

1_nsxbwNJrGJB4mpzsQv55VA

Exécutez jhsdb hsdb, ouvrez le débogueur HotSpot, si vous êtes sous Windows, vous devrez peut-être l'exécuter en tant qu'administrateur, cliquez sur Fichier pour sélectionner Attacher au processus HotSpot...

img

Utilisez le ps aux | grep java dans le système Linux et recherchez le processus pid via le Gestionnaire des tâches dans le système Windows. Entrez le pid du processus dans la boîte de dialogue ci-dessous.

img

Après l'avoir attaché avec succès, cliquez sur Outils->Navigateur de classes

img

Le navigateur de classes contient des informations sur toutes les classes chargées, recherchez com.example et vous pourrez voir toutes les classes sous com.example

img

Cliquez sur com.example.TestWindow @0x0000…. puis cliquez sur « Créer un fichier .class »

img

allez dans le répertoire où la commande jhsdb a été exécutée précédemment, vous pouvez voir le fichier de classe généré

img

UtiliserLuyten Oujadxpour ouvrir le fichier de classe et vous pouvez voir le code décompilé

img