
Tutoriel étape par étape sur l'utilisation du modèle d'IA local Gemma 4 E4B de Google pour rétro-ingénier un crackme Windows avec Ghidra, incluant la configuration pour l'inférence locale et le renommage automatisé des fonctions/variables.
Je jouais avec le nouveau modèle local open weights Gemma E4B que Google a publié, et à ma grande surprise, je rencontrais un grand succès dans son utilisation pour des scénarios de rétro-ingénierie locaux hors ligne. J'ai voulu écrire ce tutoriel pour faire connaître que l'IA locale est maintenant assez bonne pour de nombreuses tâches de base de rétro-ingénierie, et que les choses vont probablement s'améliorer rapidement à partir de là.
L'une des parties les plus fastidieuses de la rétro-ingénierie d'un nouveau binaire est au tout début, quand on n'a aucune idée de ce que sont les fonctions et variables importantes. Il existe de nombreuses astuces que les rétro-ingénieurs utilisent pour commencer, notamment en regardant les références de chaînes, le binaire diffing ou la correspondance de fonctions similaires.
L'IA est très utile ici, et personnellement j'ai eu beaucoup de succès en utilisant l'API OpenAI pour annoter un binaire ou nettoyer la sortie du décompilateur. Cependant, l'utilisation de ces API présente plusieurs inconvénients :
Coût - La décompilation et le désassemblage génèrent des tonnes de tokens. Les API facturent par token, donc les binaires plus gros peuvent coûter beaucoup d'argent à analyser. Si vous traitez une cible volumineuse avec de nombreux binaires qui se mettent à jour chaque semaine, ces coûts peuvent s'accumuler rapidement et sont prohibitifs pour les ingénieurs amateurs.
Confidentialité - Lorsque vous utilisez une API distante, l'hôte de l'IA a un aperçu de ce que vous faites. C'est un élément rédhibitoire dans certains scénarios professionnels.
Contrôle - Lorsque vous dépendez d'une API distante, vous n'avez aucun contrôle sur les modèles qui vous sont servis, ni sur la qualité des modèles. Si vous comptez sur eux pour des tâches critiques, cela peut être problématique lorsqu'ils deviennent lents ou tombent en panne au moment où vous en avez besoin, ou lorsque la qualité de leur sortie se dégrade au point de devenir inutile.
Exécuter vos propres modèles IA locaux résout certains de ces problèmes :
Coût - Cela peut être beaucoup moins cher d'exécuter un modèle local que de dépendre d'un service hébergé. Bien que votre modèle local soit probablement plus petit et plus lent que celui d'un bon fournisseur, s'il est assez bon et fonctionne en un temps raisonnable, il peut être judicieux d'économiser de l'argent en exécutant votre propre modèle, surtout si vous traitez de grandes quantités de données pour des tâches simples.
Confidentialité - Lorsque vous exécutez le modèle localement, il n'y a pas d'appels réseau et vous contrôlez totalement votre confidentialité. Personne ne peut voir pour quoi vous utilisez le modèle sur votre propre machine.
Contrôle - La beauté d'un modèle open weights est que personne ne peut vous l'enlever. OpenAI ou Anthropic pourraient un jour rendre leurs modèles SotA indisponibles, soit par des augmentations de prix, soit en supprimant explicitement leurs API. Mais avec un modèle open weights, vous contrôlez votre destin, pour le meilleur ou pour le pire.
Les modèles IA locaux ont cependant leurs inconvénients :
Taille - Plus votre modèle est grand, plus il est intelligent. Cependant, la plupart des grands modèles ne peuvent pas tenir sur du matériel grand public. Pour cette raison, si vous exécutez un modèle local, il y a de fortes chances que vous exécutiez un modèle 10 à 100 fois plus petit qu'un modèle SotA (State-of-the-Art). Cette diminution de taille entraîne directement une diminution de l'intelligence du modèle, les rendant inadaptés à de nombreuses tâches que les gens considèrent comme acquises dans des modèles SotA comme ChatGPT/Codex ou Claude.
Vitesse - Les modèles locaux fonctionneront probablement plus lentement sur votre machine que lors de l'utilisation d'une API IA. Là encore, cela est dû aux limites du matériel grand public et à certaines astuces que les fournisseurs d'API peuvent utiliser et qui ne sont généralement pas disponibles pour vous.
Configuration - Exécuter des modèles locaux, c'est comme essayer de faire fonctionner Linux sur un ordinateur portable reconditionné plutôt que d'entrer dans un Apple Store et d'acheter un tout nouveau MacBook Air. L'expérience Codex et Claude Code est l'expérience Apple Store de l'IA. L'expérience des modèles IA locaux, c'est le gars avec un fedora dans son garage qui tape sur un ordinateur bancal pour essayer de le faire fonctionner. Au minimum, vous devez vous préoccuper des éléments suivants :
Ce n'est pas un parcours facile, et beaucoup de gens abandonnent en supposant que les modèles IA locaux ne sont pas à la hauteur de la tâche, parce qu'ils n'ont jamais trouvé la bonne combinaison de matériel/modèle/paramètres/invite/harnais pour les faire fonctionner pour leur tâche. Bien que dans de nombreux cas ils aient raison, j'espère que ce tutoriel au moins mettra en lumière le chemin parcouru par les modèles locaux, comment ils peuvent aider à la rétro-ingénierie, et inspirera les gens à essayer l'IA locale.
(le mot de passe de l'archive est crackmes.one). J'ai hébergé un lien alternatif ici dans le dépôt au cas où le lien original ne fonctionnerait plus.
Ghidra 12.04 est utilisé pour le désassemblage et la décompilation. Vous devrez installer OpenJDK 21 pour l'utiliser : https://github.com/nationalsecurityagency/ghidra
En travaillant sur ce tutoriel, j'ai codé en vibe avec Claude Code un plugin Ghidra pour renommer les fonctions et variables avec l'IA. Vous pouvez télécharger le plugin ici : https://github.com/markoglasgow/Ghidra_FastAIRenamer_Plugin
Pour l'installer, déplacez simplement le fichier zip ghidra_12.0.4_PUBLIC_20260427_FastAIRenamerPlugin.zip vers ${GHIDRA_HOME}\Extensions\Ghidra, puis lancez Ghidra en exécutant ${GHIDRA_HOME}\ghidraRun.bat. Pour activer le plugin, dans l'écran initial de Ghidra, dans le menu supérieur, sélectionnez File -> Install Extensions, puis dans le navigateur de plugins, cochez la case à côté de FastAIRenamerPlugin, puis cliquez sur Ok. Ghidra vous demandera de redémarrer, faites-le immédiatement.