Ghidra
hackingDéfinition
Ghidra est un framework de rétro-ingénierie logicielle open source développé par la National Security Agency américaine et publié publiquement en mars 2019 lors de la conférence RSA. Il permet de désassembler et décompiler des fichiers exécutables, bibliothèques partagées et firmwares provenant d'un très large éventail d'architectures processeur : x86, x86-64, ARM, MIPS, PowerPC, entre autres. Sa fonctionnalité phare, le décompilateur intégré, retranscrit le code assembleur en pseudo-code de type C, facilitant considérablement l'analyse de malware et l'audit de binaires sans code source disponible. Écrit en Java avec une interface graphique basée sur Swing, Ghidra propose également un moteur de scripting en Java ou Python (via Jython, et plus récemment Python natif avec Ghidrathon), un système de collaboration multi-utilisateur pour les analyses en équipe, et une architecture extensible par plugins. Il s'est rapidement imposé comme alternative gratuite à IDA Pro, jusque-là dominant et payant, et est aujourd'hui largement utilisé par les analystes malware, les chercheurs en vulnérabilités et les équipes de reverse engineering firmware IoT et OT. Sa publication par la NSA, initialement révélée via les fuites Vault7 de WikiLeaks avant sa mise en open source officielle, a marqué un tournant dans la démocratisation des outils d'analyse binaire avancés.
Ghidra est une plateforme de rétro-ingénierie logicielle (SRE, Software Reverse Engineering) développée par la NSA et publiée en open source en mars 2019 sous licence Apache 2.0. Conçue à l'origine pour les besoins internes de l'agence américaine, elle est aujourd'hui l'un des outils de référence pour analyser un binaire dont on ne possède pas le code source : exécutable Windows, firmware embarqué, échantillon de malware ou binaire de challenge CTF. Sa gratuité, la qualité de son décompilateur et son ouverture en ont fait le principal concurrent des solutions commerciales historiques.
Une architecture modulaire fondée sur Java
Le socle de Ghidra est écrit en Java et repose sur un système de modules et d'extensions chargés dynamiquement. Chaque grande fonction — chargeurs de formats (PE, ELF, Mach-O, DEX), analyseurs automatiques, exportateurs, fenêtres de l'interface — est un module indépendant déclaré via l'API du framework. Cette granularité permet d'ajouter un format de fichier ou un processeur exotique sans recompiler l'outil.
Précision technique souvent mal comprise : si le framework et l'interface graphique sont en Java, le moteur de décompilation est un binaire natif écrit en C++, exécuté dans un processus séparé et piloté par la partie Java. C'est ce découplage qui explique à la fois la portabilité de l'ensemble et les performances honorables de la décompilation sur de gros binaires.
Ghidra propose aussi un mode projet partagé via un serveur Ghidra Server : plusieurs analystes peuvent travailler sur le même programme avec versionnage, verrous et fusion des annotations. C'est une fonctionnalité rare, particulièrement utile pour une équipe CERT ou un laboratoire d'analyse.
Désassembleur, P-Code et langage SLEIGH
Le désassembleur de Ghidra ne code pas « en dur » les jeux d'instructions. Chaque architecture est décrite dans un langage de spécification déclaratif nommé SLEIGH, qui associe à chaque opcode sa syntaxe et sa sémantique. Cette sémantique est exprimée en P-Code, une représentation intermédiaire (IR) indépendante du processeur.
Ce choix a deux conséquences majeures. D'abord, la couverture matérielle est exceptionnellement large : x86/x64, ARM/AArch64, MIPS, PowerPC, SPARC, RISC-V, 68000, AVR, PIC, Z80, 6502, SuperH, MSP430, Xtensa… Ensuite, tous les traitements en aval — décompilation, propagation de constantes, analyse de flot de données — travaillent sur le P-Code et fonctionnent donc identiquement sur toutes les architectures. Ajouter un processeur revient à écrire un fichier .slaspec, sans toucher au cœur de l'outil : un atout décisif pour l'analyse de firmware embarqué ou industriel.
Le décompilateur, argument massue
Le décompilateur produit un pseudo-code proche du C à partir du P-Code, en appliquant simplification d'expressions, reconstruction des structures de contrôle (if, while, switch) et inférence des conventions d'appel. L'analyste peut renommer variables et fonctions, appliquer des types (struct, enum, pointeurs de fonction), corriger un prototype : la vue décompilée se régénère immédiatement, et les annotations restent synchronisées avec la vue assembleur.
Le gestionnaire de types (Data Type Manager) permet d'importer des en-têtes C, ou de charger des bibliothèques de types (GDT) pour les API Windows ou POSIX. Correctement typé, un binaire stripé redevient rapidement lisible.
Scripting : Java, Jython et Python 3
L'automatisation est un pilier de Ghidra. L'API complète est exposée en Java, et historiquement en Python 2.7 via Jython. Les versions récentes intègrent PyGhidra, qui donne accès à l'API depuis un CPython 3 natif — donc avec requests, yara-python, pandas ou n'importe quel paquet PyPI.
Un script accède aux objets de haut niveau : currentProgram, getFunctionAt(), itération sur les instructions, lecture du P-Code, écriture de commentaires ou de bookmarks. Surtout, le mode headless (analyzeHeadless) permet d'exécuter Ghidra sans interface graphique, en batch, sur des centaines d'échantillons : c'est la brique standard pour industrialiser un pipeline de triage malware ou d'extraction d'IOC.
Comparaison avec IDA Pro et Binary Ninja
- IDA Pro reste la référence du marché, avec un désassembleur d'une maturité inégalée, des analyses heuristiques très abouties et l'écosystème FLIRT/Lumina pour l'identification des fonctions de bibliothèque. Son décompilateur Hex-Rays est excellent, mais chaque architecture se paie séparément, et le coût total est élevé. Ghidra offre gratuitement une décompilation multi-architecture d'un niveau très proche, au prix d'un désassemblage parfois moins fin sur les binaires obfusqués.
- Binary Ninja se positionne entre les deux : licence abordable, API Python remarquablement propre et pile d'IR à plusieurs niveaux (LLIL/MLIL/HLIL) très appréciée pour l'analyse programmatique. Son interface est plus moderne et plus réactive que celle de Ghidra, mais sa couverture d'architectures et son écosystème restent plus étroits.
- Ghidra l'emporte sur le coût, la diversité des processeurs, la collaboration multi-utilisateurs et la transparence du code. Ses faiblesses : une ergonomie Java parfois lourde, une consommation mémoire notable, et un débogueur intégré plus jeune que la concurrence.
Extensions et communauté
L'écosystème communautaire comble efficacement les manques. Parmi les extensions les plus utilisées : Ghidrathon (Python 3, Mandiant), ret-sync pour synchroniser Ghidra avec un débogueur (WinDbg, GDB, x64dbg), GhidraEmu et pcode-emulator pour l'émulation, Cartographer pour la couverture de code, ou encore des ponts vers l'analyse symbolique (angr). Des paquets de processeurs tiers ajoutent des cibles absentes du dépôt officiel.
Cas d'usage typiques
- Analyse de malware : identification des routines de chiffrement, extraction de configuration de C2, compréhension des mécanismes de persistance et d'anti-analyse, le tout en statique — sans exécuter l'échantillon.
- Recherche de vulnérabilités : repérage de
strcpy,memcpyet arithmétique de pointeurs non contrôlée, remontée des chemins depuis les entrées non fiables, audit de firmware IoT/OT extrait avecbinwalk. - Compétitions CTF : catégorie reverse, où la décompilation gratuite et scriptable accélère considérablement la résolution des crackmes.
- Interopérabilité et forensique : rétro-ingénierie de protocoles ou de formats propriétaires, vérification de la présence d'une porte dérobée dans un composant tiers, expertise judiciaire.
Ghidra n'est pas un outil « presse-bouton » : sa valeur dépend de la méthode de l'analyste, de sa connaissance des architectures et de sa capacité à typer correctement les données. Mais en supprimant la barrière financière de la rétro-ingénierie professionnelle, il a durablement élargi l'accès à cette discipline, aussi bien en entreprise qu'en formation.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h