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
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 :
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.
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...
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.
Après l'avoir attaché avec succès, cliquez sur Outils->Navigateur de classes
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
Cliquez sur com.example.TestWindow @0x0000…. puis cliquez sur « Créer un fichier .class »
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é
UtiliserLuyten Oujadxpour ouvrir le fichier de classe et vous pouvez voir le code décompilé