Skip to content

Tutoriel Ghidra : guide débutant du reverse engineering

Apprenez Ghidra à partir de zéro : installation, import d'un binaire, analyse automatique et lecture du décompilateur. Un guide pratique pour débutants.

Publié le 7 min de lecture

Si vous débutez en reverse engineering, Ghidra est le meilleur outil gratuit que vous puissiez apprendre. Ce tutoriel pour débutants vous guide à travers son installation, l'import de votre premier binaire, l'exécution de l'analyse et la lecture de la sortie du désassembleur et du décompilateur — les compétences fondamentales que vous utiliserez chaque jour.

Qu'est-ce que Ghidra ?

Ghidra est un framework de reverse engineering logiciel (SRE) gratuit et open source développé par la NSA et publié publiquement en 2019. Il prend un programme compilé — un .exe, un binaire ELF Linux, une bibliothèque partagée — et reconstruit sa structure pour que vous puissiez comprendre ce qu'il fait sans le code source d'origine.

Sa fonctionnalité phare est un décompilateur intégré qui transforme le code machine brut en pseudocode lisible proche du C. Les outils commerciaux facturaient historiquement des milliers de dollars pour cette capacité, si bien que la gratuité de Ghidra a changé la donne pour les apprenants. Pour tirer le meilleur parti de la sortie, il est utile de garder une référence d'assembleur à portée de main pendant que vous lisez le désassemblage, et un glossaire des termes du reverse engineering sous la main pour le jargon inconnu.

Installer Ghidra

Ghidra est écrit en Java, l'installation consiste donc surtout à mettre en place le bon environnement d'exécution.

  1. Installez un JDK. Ghidra nécessite Java 17 ou plus récent (un JDK 64 bits, pas seulement un JRE). Les builds Adoptium / Temurin fonctionnent bien sur toutes les plateformes.
  2. Téléchargez Ghidra depuis la page officielle des releases GitHub. Vous obtenez une unique archive ZIP — il n'y a pas d'installeur.
  3. Extrayez l'archive où vous voulez, par exemple ~/ghidra.
  4. Lancez-le. Sous Linux ou macOS, exécutez ./ghidraRun ; sous Windows, double-cliquez sur ghidraRun.bat.

C'est tout. Comme il est autonome, vous pouvez aussi le conserver sur une clé USB pour l'analyse de malwares sur une machine isolée.

Créer un projet et importer un binaire

Ghidra organise le travail en projets, qui sont des conteneurs pour un ou plusieurs binaires ainsi que toutes vos notes d'analyse.

  1. Depuis la fenêtre principale, choisissez File → New Project.
  2. Sélectionnez un Non-Shared Project (les projets partagés sont destinés aux équipes utilisant un serveur Ghidra), nommez-le et choisissez un emplacement.
  3. Importez un binaire avec File → Import File et sélectionnez votre cible. Ghidra détecte automatiquement le format et l'architecture — vérifiez que la spécification de langage/compilateur semble correcte, puis cliquez sur OK.
  4. Double-cliquez sur le fichier importé dans l'arborescence du projet pour l'ouvrir dans le CodeBrowser, l'espace de travail d'analyse principal de Ghidra.

Astuce pour débutant : entraînez-vous sur un petit programme que vous avez compilé vous-même, comme un « Hello World » en C. Connaître le source rend la sortie bien plus facile à interpréter.

Lancer l'analyse automatique

La première fois que vous ouvrez un binaire, Ghidra vous demande si vous voulez l'analyser. Répondez oui et acceptez les analyseurs par défaut pour l'instant.

L'analyse automatique est l'étape où Ghidra fait le gros du travail : elle identifie les fonctions, trace les références croisées, récupère les chaînes, résout les appels de bibliothèque et alimente le décompilateur avec l'ensemble. Sur un petit binaire, cela prend quelques secondes ; sur un gros, cela peut prendre une minute ou deux. Laissez-la se terminer avant de commencer à explorer.

Sachez que certains programmes combattent délibérément cette étape. Les malwares et les logiciels protégés utilisent des astuces anti-désassemblage et de l'obfuscation de code pour tromper l'analyseur, alors ne présumez pas que l'analyse automatique est parfaite sur des cibles hostiles.

Le CodeBrowser se divise en plusieurs panneaux synchronisés. Les quatre que vous utiliserez constamment sont :

  • Symbol Tree (à gauche) — fonctions, labels, imports et exports. Votre table des matières.
  • Listing (au centre) — le désassemblage : adresses, octets bruts et instructions assembleur.
  • Decompiler (à droite) — le pseudocode proche du C pour la fonction que vous consultez.
  • Program Trees / Data Type Manager — les sections et les types que Ghidra connaît.

Cliquez sur n'importe quelle fonction dans le Symbol Tree et le Listing comme le Decompiler s'y rendent tous deux. Les deux restent synchronisés : cliquez sur une ligne dans l'un et l'emplacement correspondant se met en surbrillance dans l'autre. Cet appariement est le cœur de Ghidra — lisez le pseudocode lisible à droite, et descendez à l'assembleur précis à gauche lorsque vous avez besoin de détail.

Lire le décompilateur

La sortie du décompilateur ne ressemblera pas au source d'origine. Les variables portent des noms comme iVar1 et uStack_20, et les types sont des suppositions au mieux. C'est normal. Votre travail en tant qu'analyste est de la rendre lisible en annotant progressivement ce que vous comprenez.

Renommer et retyper

C'est ici que le reverse engineering devient interactif. À mesure que vous découvrez ce que fait quelque chose, dites-le à Ghidra :

  • Renommez une variable ou une fonction en cliquant dessus et en appuyant sur L (ou clic droit → Rename). Transformez FUN_00401050 en parse_config.
  • Retypez une variable avec Ctrl+L pour changer son type de donnée — par exemple de undefined4 en int * ou en une structure que vous définissez.
  • Ajoutez des commentaires avec un point-virgule (;) dans le Listing, ou // dans le Decompiler, pour laisser des notes à votre futur vous.

Chaque renommage se propage à travers le Listing et le Decompiler, si bien que le tableau se clarifie à chaque label correct.

Trouver les chaînes et les références croisées

Les chaînes sont une mine d'or pour un débutant — elles pointent droit vers des comportements intéressants comme des chemins de fichiers, des messages d'erreur et des URL.

  1. Ouvrez Window → Defined Strings pour lister chaque chaîne que Ghidra a récupérée.
  2. Double-cliquez sur l'une d'elles pour y sauter dans le Listing.
  3. Faites un clic droit sur une adresse ou un symbole et choisissez References → Show References to (raccourci Ctrl+Shift+F) pour trouver chaque endroit du code qui l'utilise.

Les références croisées (XREFs) vous permettent de travailler à rebours : trouvez une chaîne suspecte, puis sautez vers la fonction qui la référence. Notez que toutes les chaînes ne résident pas dans la table des chaînes — des techniques comme les stack strings construisent le texte caractère par caractère à l'exécution précisément pour se cacher de cette vue, donc une liste de chaînes « propre » ne signifie pas toujours un programme propre.

Patching de base

Ghidra peut également modifier un binaire. Pour changer une instruction, faites un clic droit dessus dans le Listing et choisissez Patch Instruction, puis saisissez le nouvel assembleur (par exemple, transformer un JZ en JNZ pour contourner une vérification). Exportez le résultat avec File → Export Program en utilisant le format « Original File » pour écrire un binaire patché sur le disque. Gardez le patching simple pendant votre apprentissage — un seul octet changé au mauvais endroit casse le fichier.

Scripter en une ligne

Lorsque vous dépassez le simple clic, le Script Manager de Ghidra (Window → Script Manager) vous permet d'automatiser l'analyse en Java ou Python, et vous pouvez piloter toute l'API depuis la console de l'interpréteur Python pour des tâches ponctuelles rapides.

Et ensuite ?

Vous disposez maintenant de la boucle complète du débutant : importer, analyser, lire le décompilateur, renommer, traquer les chaînes et les XREFs, et patcher. La façon la plus rapide de progresser est la répétition sur des binaires réels. Parcourez notre bibliothèque complète de techniques de reverse engineering pour apprendre les astuces que les programmes emploient pour résister à l'analyse — et comment les déjouer dans Ghidra.

Prêt à continuer ? Choisissez un crackme, ouvrez-le dans Ghidra et renommez chaque fonction jusqu'à ce que le pseudocode se lise comme une histoire. Cet unique exercice enseigne plus que n'importe quel guide.

Articles liés

Une comparaison juste et actuelle d'IDA Pro et Ghidra : coût, décompilateurs, scripting, débogage, et lequel convient aux étudiants ou aux pros.
Qu'est-ce que le reverse engineering ? Comment les analystes déconstruisent logiciels et matériel pour comprendre et sécuriser des systèmes.
Un guide pour débutants sur l'analyse de malware : les quatre types d'analyse, monter un labo sûr, le triage statique et dynamique, un parcours d'apprentissage.