Ghidra
Framework de rétro-ingénierie publié par la NSA en mars 2019 sous Apache 2.0 : désassembleur et décompilateur que des agents pilotent via REA ou GhidraMCP.
SFEIR AI · Publié le 23 octobre 2026
Un framework de rétro-ingénierie publié par la NSA
Ghidra est un framework de rétro-ingénierie logicielle (« software reverse engineering », SRE) « created and maintained by the National Security Agency Research Directorate », selon le README du dépôt. La NSA l'a rendu public en mars 2019 : le dépôt GitHub date du 1er mars 2019 et le journal des versions commence à la 9.0.1, datée du même mois. La licence est Apache 2.0, et le dépôt comptait 93 381 étoiles le 23 octobre 2026. Le projet continue de livrer : la 11.3 est sortie le 6 février 2025, la 12.1.4 le 21 septembre 2026 et la 12.2 le 22 octobre 2026.
Ghidra désassemble un binaire, reconstruit ses fonctions et produit un pseudocode proche du C, que l'analyste lit à la place de l'assembleur. Depuis la 11.3, PyGhidra, l'intégration Python, fait partie de la distribution : c'est ce que des projets tiers comme DelphiReSym exigent (Ghidra 11.3 ou plus récent), et ce que le mode headless de GhidraMCP utilise. Sous Linux arm64, le décompilateur natif ne vient pas compilé : Javier Cañete Arroyo a dû lancer gradlew buildNatives avant de décompiler un binaire C sans symboles avec Ghidra 12.1.4, et y retrouver les constantes 31, 9973 et 4242 qu'il y avait placées.
Comment REA pilote Ghidra
REA (Reverse Engineer Anything) ne contient aucun moteur natif : « Deep native analysis uses one of them [Hopper, Ghidra, IDA] », dit sa FAQ, et REA ne télécharge ni n'installe Ghidra ou Java. L'agent reçoit en retour du pseudocode, de l'assembleur, des chaînes, des symboles et des références croisées. Le README de REA précise que Ghidra « also supports 16-bit DOS analysis », ce qu'illustrent deux de ses démonstrations officielles : la reconstruction d'un calcul de panoramique sonore de DX-Ball (« passes 3,205 original-x86 cases and reproduces all 63 compiled function bytes ») et un calcul d'anneau de projectiles 16 bits du jeu PC-98 TH04. Un document séparé, docs/ghidra-nativeaot.md, couvre les corps natifs des applications .NET compilées en NativeAOT.
Le pont entre REA et Ghidra est authentifié par un jeton de capacité aléatoire propre à chaque session, sur socket Unix de l'utilisateur courant sous Linux et macOS, en TCP local authentifié sous Windows. Chaque session Ghidra ouvre un projet temporaire isolé, avec des répertoires privés et des limites de CPU et de mémoire, supprimé à la fermeture. Le fichier SECURITY.md de REA fixe la portée de ces mesures : « These controls limit accidental persistence and resource use; they do not make Ghidra a sandbox. » Un binaire piégé qui exploiterait une faille de l'importeur s'exécuterait avec les droits de l'utilisateur.
GhidraMCP, l'autre pont
GhidraMCP, publié par LaurieWired sous licence Apache 2.0 (11 494 étoiles le 23 octobre 2026, dernier push le 10 octobre), expose Ghidra à un agent par un serveur MCP dédié. Deux différences avec REA. GhidraMCP écrit dans le projet Ghidra (« Automatically rename methods and data »), là où REA en lit la sortie ; et il ne couvre que Ghidra, quand REA traverse les couches, du renderer Electron à l'add-on natif. Javier Cañete Arroyo en tire une règle de choix : si l'on ne fait que décompiler et que l'on a déjà IDA ou Ghidra, un pont mono-moteur ajoute moins de surface ; REA prend son sens quand la question traverse plusieurs formats.
Brian Crawford et Patrick McClure (arXiv, 29 mai 2026) ont montré, avec GhidraMCP en montage d'exemple, que des chaînes d'injection de prompt cachées dans un binaire peuvent amener un agent de rétro-ingénierie à rapporter qu'un programme fait autre chose que ce qu'il fait. Le décompilateur, lui, n'est pas trompé : c'est le modèle qui lit sa sortie qui l'est. D'où la lecture en deux temps que SFEIR applique dans l'offre AI Cyber : l'agent propose, un humain vérifie la preuve dans le pseudocode.
Le cas des applications legacy
Pour une application Delphi dont le code source est perdu, DelphiReSym (WenzWenzWenz, licence BSD-3-Clause) restaure dans Ghidra, via PyGhidra, le contexte sémantique tiré des métadonnées : versions Delphi 2010 puis XE à XE6 et suivantes, conçu pour « Delphi malware and legacy applications ». Les scripts dhrake (huettenhain) font le pont avec IDR, l'Interactive Delphi Reconstructor : IDR extrait les symboles en script IDC, DhrakeInit les importe dans Ghidra et DhrakeParseClass reconstruit les classes depuis la table des méthodes virtuelles. Pour Visual Basic 3, ghidra-vb3 (dfl, mai 2026) désassemble le p-code interprété par VBRUN300.DLL ; l'issue #4627 de REA, ouverte le 17 octobre 2026, propose d'y relier REA, qui rejette encore les exécutables Windows 16 bits au format NE. Ce que Ghidra rend lisible redevient spécifiable : c'est l'entrée de la démarche de modernisation du legacy.
Questions fréquentes
Qu'est-ce que Ghidra ?
Un framework de rétro-ingénierie logicielle créé et maintenu par la direction de la recherche de la NSA, rendu public en mars 2019 sous licence Apache 2.0. Il désassemble un binaire et en produit un pseudocode proche du C. La version 12.2 est sortie le 22 octobre 2026.
Ghidra est-il gratuit ?
Oui, le code et les binaires sont publiés sous licence Apache 2.0 sur GitHub. Il faut un JDK pour l'exécuter, et sous Linux arm64 compiler soi-même le décompilateur natif avec gradlew buildNatives, comme l'a fait Javier Cañete Arroyo pour tester REA 6.7.0 avec Ghidra 12.1.4.
Comment un agent de code utilise-t-il Ghidra ?
Par un pont MCP. REA pilote Ghidra en lecture (pseudocode, assembleur, chaînes, symboles) dans un projet temporaire authentifié par jeton de session ; GhidraMCP expose Ghidra seul et peut écrire dans le projet, par exemple renommer des méthodes. Dans les deux cas, ni REA ni GhidraMCP n'installent Ghidra à votre place.
Ghidra protège-t-il contre un binaire malveillant ?
Non. Ghidra analyse le fichier avec les droits de l'utilisateur qui le lance, et REA écrit que ses projets temporaires « do not make Ghidra a sandbox ». Un binaire inconnu s'analyse dans une machine virtuelle ou un conteneur dédié, et un agent qui lit la sortie peut être trompé par des chaînes d'injection de prompt cachées dans le binaire.
Sources
- GitHub, dépôt NationalSecurityAgency/ghidra : « created and maintained by the National Security Agency Research Directorate », licence Apache-2.0, dépôt créé le 1er mars 2019, 93 381 étoiles le 23 octobre 2026 · 2026-10-23
created and maintained by the National Security Agency Research Directorate
- Ghidra, journal des versions (ChangeHistory.md) : première entrée « Ghidra 9.0.1 Change History (March 2019) » · 2026-10-23
- GitHub, releases de Ghidra : 11.3 (6 février 2025), 12.1.4 (21 septembre 2026), 12.2 (22 octobre 2026) · 2026-10-23
- README de REA : moteurs natifs (Hopper, Ghidra, IDA), support DOS 16 bits via Ghidra, démonstrations DX-Ball et TH04 · 2026-10-23
Deep native analysis uses one of them. Static JavaScript and .NET inspection work without a native analysis engine.
- SECURITY.md de REA : pont Ghidra authentifié par jeton de session, projet temporaire isolé, limites CPU et mémoire, « they do not make Ghidra a sandbox » · 2026-10-23
These controls limit accidental persistence and resource use; they do not make Ghidra a sandbox.
- GhidraMCP (LaurieWired) : serveur MCP pour Ghidra, Apache-2.0, renommage automatique de méthodes et de données, mode PyGhidra headless · 2026-10-23
Automatically rename methods and data
- Javier Cañete Arroyo (Jacar Systems) : REA 6.7.0 avec Ghidra 12.1.4 sous Docker arm64, décompilateur natif à compiler via gradlew buildNatives, binaire C sans symboles décompilé · 2026-10-19
- DelphiReSym (WenzWenzWenz) : restauration du contexte sémantique Delphi pour Ghidra via PyGhidra, Ghidra 11.3 ou plus récent requis · 2026-10-23
- dhrake (huettenhain) : scripts Ghidra et pont avec IDR pour les binaires Delphi · 2026-10-23
- Issue #4627 de REA (dfl, 17 octobre 2026) : demande de support VB3, exécutables NE 16 bits rejetés, outil externe ghidra-vb3 · 2026-10-17
- Brian Crawford, Patrick McClure, « Investigating Detection and Obfuscation of Prompt Injection Attacks Against Software Reverse Engineering AI Agents », arXiv:2605.30677 (GhidraMCP en montage d'exemple) · 2026-05-29
Ghidra dans vos projets
Échanger avec SFEIRArticles liés
REA, GhidraMCP ou ida-pro-mcp : quel MCP de rétro-ingénierie choisir
REA orchestre plusieurs moteurs et formats, GhidraMCP et ida-pro-mcp branchent un agent sur un seul décompilateur. Critères de choix en entreprise : couverture, coût des moteurs (IDA Pro Essential à partir de 1 099 €/an au 23/10/2026), droits d'écriture et poids dans le contexte.
Applications Delphi : ce que Ghidra et les agents permettent
Un exécutable Delphi garde après compilation une partie de ses métadonnées de classes et de formulaires. DelphiReSym, IDR et dhrake les remettent dans Ghidra ; un agent lit ensuite un pseudocode enrichi. État des lieux au 17 octobre 2026, et ce que REA couvre.
Rétro-ingénierie d'applications VB6 : peu de retours, un workflow possible
Visual Basic 6 fait encore tourner des applications métier dont le source a disparu. REA ne cite pas VB5/6 dans ses cibles documentées au 18 octobre 2026 ; les décompilateurs spécialisés restent la référence. Ce qu'on sait, ce qu'on ignore, et un workflow pour rétro-documenter.
PowerBuilder et NSDK : état des lieux de la rétro-ingénierie par agents
PowerBuilder et NS-DK font encore tourner des applications de gestion critiques. Au 20 octobre 2026, aucun retour public de rétro-ingénierie par agents n'existe sur ces deux stacks, et REA ne les cite pas. Ce qui existe, ce qui manque, et la voie réaliste pour une DSI.
Analyser un malware en local avec un agent, sans l'exfiltrer
REA analyse un échantillon sur votre machine, sans l'envoyer à un service tiers. Mais les résultats partent chez le fournisseur du modèle, et l'outil n'est pas un bac à sable. Les règles d'une analyse de malware locale : statique seulement, VM dédiée, modèle local pour le sensible.
Firmware et objets connectés : la rétro-ingénierie par agents
Octobre 2026 : des TV connectées débarrassées de leurs pubs, des objets abandonnés ressuscités. REA s'appuie sur Binwalk et Unblob pour extraire un firmware sans l'exécuter. Ce que l'outil fait vraiment, les usages défensifs et de continuité, et les risques d'un firmware réécrit par IA.
REA en trois schémas : architecture, fonctionnement et usage
Comment un développeur installe REA, ce qui se passe quand son agent l'appelle, et comment s'en servir pour comprendre une fonctionnalité avant de la déboguer ou de la reproduire. Trois schémas, la doc officielle du dépôt et les tests publics d'octobre 2026.