Le 18 août 2026, la NSA a publié Ghidra 12.1.3 sur GitHub. L’archive utile est ghidra_12.1.3_PUBLIC_20260817.zip (~543 Mo) ; le SHA-256 figure sur la page de release. Qui cherche un tutoriel Ghidra 2026 bloque souvent sur trois erreurs empilées : mauvais JDK, téléchargement du Source Code au lieu du ZIP multiplateforme, et entraînement sur un logiciel sans droit. Ce texte couvre l’installation, la décompilation, le débogage et l’analyse binaire — uniquement pour des programmes que vous avez le droit d’inspecter : binaires que vous avez compilés, échantillons autorisés par votre employeur, matériel de recherche en labo isolé.
Ghidra n’est pas un bouton magique « restaurer le source ». C’est le cadre de reverse open source de la NSA : désassemblage, décompilateur, références croisées, scripts et débogueur dans un même projet. En 2026 il reste utile parce qu’il est gratuit, multiplateforme, et au niveau des outils commerciaux pour lire une structure. La ligne 12.1 fixe le runtime sur JDK 21 et demande Python 3.9–3.14 pour le débogueur. Lisez d’abord Getting Started et What's New in Ghidra 12.1 avant de croire une capture d’il y a trois ans.
Pourquoi ouvrir Ghidra en 2026 plutôt que fixer un listing brut
En recherche sécu et triage firmware, le temps ne part pas à « voir des instructions ». Il part à nommer les fonctions, remettre les types, suivre les xrefs pour savoir qui appelle qui. C’est le travail de Ghidra : le Listing montre les octets, le décompilateur un pseudo-C lisible, les curseurs restent alignés. Renommez une variable, la fenêtre C suit — plus vite que des post-it sur un désassemblage nu.
L’autre gain est l’hygiène de projet. Un Project Ghidra garde fichiers, options d’analyse, signets et commentaires. Deux personnes partagent un projet au lieu de se renvoyer « la ligne 147 ressemble à une clé ». 12.1 livre aussi Headless, PyGhidra et BSim ; cet article reste sur le chemin GUI.
Matériel : plancher officiel 4 Go de RAM, 1 Go d’install, double écran fortement conseillé. C’est « ça s’ouvre ». Des dizaines de Mo de firmware veulent 16 Go ; à 32 Go le navigateur arrête de se battre. Le calcul ressemble à OpenClaw 2.0 sur VPS : combien de CPU, RAM et disque faut-il à un serveur Linux ? — autre outil, même leçon : une analyse longue tue la RAM avant le CPU.
Installer : JDK 21 d’abord, puis le ZIP officiel — pas les sources
Ghidra 12.1 exige un JDK 21 64 bits. S’il n’y a que du 17 ou du 11, le lanceur cherche un 21 puis demande un Java home. Identique sous Windows, macOS et Linux. LTS gratuits cités : Adoptium Temurin et Amazon Corretto. Installez le 21 depuis la page des releases Temurin, vérifiez java -version, et pointez JAVA_HOME vers la racine du JDK (parent de bin).
Puis le ZIP multiplateforme sous Assets, nommé ghidra_12.1.3_PUBLIC_20260817.zip. N’ouvrez pas « Source Code (zip) » sauf si vous comptez builder avec Gradle. SHA-256 de 12.1.3 : 93a5d11a9ad510622acaaf908c556a7b9b764d338e78a7567f3689bf5081fd54. Hashez localement ; si ça ne colle pas, vous effacez et recommencez.
shasum -a 256 ghidra_12.1.3_PUBLIC_20260817.zip
# attendu : 93a5d11a9ad510622acaaf908c556a7b9b764d338e78a7567f3689bf5081fd54
Décompressez dans un dossier inscriptible — pas à la racine d’un disque cloud qui verrouille la synchro. Lancez ./ghidraRun ou ghidraRun.bat. Débogueur et PyGhidra veulent Python 3.9–3.14 ; sous macOS, LLDB arrive souvent avec Xcode ; sous Linux, GDB 13+ avec Python 3 embarqué. Les paquets distro retardent ; apprenez sur le ZIP GitHub.
Première session : Project, Import, Analyze — pas de Next en rafale
File → New Project. Non-Shared suffit en solo. Importez un binaire que vous avez compilé ou un échantillon autorisé. Vérifiez le format (ELF / Mach-O / PE) et le langage (x86:LE:64, AARCH64:LE:64). Un Mach-O Apple Silicon est AARCH64 ; un build Linux x86_64 est x86-64. Un mauvais langage déchire les frontières de fonctions pour le reste de la journée.
Double-clic dans CodeBrowser. Auto Analysis convient aux petits binaires pédagogiques ; sur un gros firmware, coupez les analyseurs coûteux jusqu’au premier écran de pseudo-C. Attendez la barre. Renommer en cours d’analyse, c’est offrir vos noms au passage suivant.
Ensuite, un système de coordonnées : Imports/Exports, Defined Strings, Functions. Les imports montrent les bibliothèques, les chaînes les erreurs et URL, la liste des fonctions dit si l’auto-analyse a haché le chemin principal. Ces trois vues battent un plongeon aveugle dans entry.
Décompilateur : Listing à gauche, pseudo-C à droite, les noms au milieu
Cliquez une instruction, le C suit ; cliquez une variable, le Listing surligne. Ce va-et-vient est le geste de base — plus fiable que coller du pseudo-C dans un chat qui ne voit ni vos commentaires ni vos types.
La qualité suit les types que vous donnez. Les undefined4 et char * par défaut se lisent comme un brouillon. L pour le type, ; pour commenter, renommer les fonctions dans les deux volets. Changez FUN_100003f80 en parse_config_line et toutes les xrefs changent d’étiquette. Les noms sont des hypothèses : les fausses se font recaler par la xref suivante, c’est leur utilité.
Empruntez les types aux en-têtes et aux symboles de debug. Build à vous : gardez DWARF/PDB. Build strippé : reconstruisez les structs lentement via imports, chaînes et métier. Dix minutes dans le Data Type Manager transforment un tas d’offsets en noms de champs.
| Question | Fenêtre | À éviter |
|---|---|---|
| Octets réels et sauts | Listing | Croire le C sans adresses |
| Ce que fait la fonction | Decompiler | Prendre les FUN_* anonymes pour vérité |
| Qui l’appelle | References / Function Graph | Deviner depuis une seule pile |
| Quelles bibliothèques | Imports / Exports | Ignorer les noms chargés dynamiquement |
Débogueur : lancer un binaire que vous venez de compiler
Le Debugger 12.1 parle au débogueur hôte via Python : GDB sous Linux, LLDB sous macOS (souvent via Xcode), connecteurs WinDbg sous Windows. Il faut Python 3.9–3.14 et des paquets comme protobuf. Ghidra ne remplace pas GDB/LLDB ; il synchronise leur session dans une Trace pour coller le C statique aux registres vivants.
Premier débogage légitime : un petit programme compilé il y a cinq minutes. Choisissez le lanceur, cassez dans une fonction que vous avez écrite, pas à pas, et voyez si les registres racontent la même histoire que le décompilateur. Sinon, vous corrigez types et noms, puis vous relancez.
N’en faites pas une porte vers n’importe quel processus. Machines de prod, session d’un collègue, environnement sans autorisation écrite : vous n’y allez pas. Un échantillon inconnu ne tourne pas sur le bureau hôte : snapshot, VM ou machine dédiée d’abord. La discipline d’isolement rejoint OpenClaw 2.0 sur un VPS est-il sûr ? Contrôle 7 jours : permissions, SSH, clés API : autre objet, même règle — quotidien et labo séparés.
Analyse binaire : un flux, pas une intuition
Face à un binaire inconnu que vous avez le droit d’analyser, figez l’ordre. Un : format, architecture, symboles ou non. Deux : chaînes et imports — réseaux, fichiers, crypto. Trois : depuis main / l’entrée, nommer seulement le chemin principal. Quatre : Function Graph sur la fonction chaude — gestion d’erreur ou fourche métier. Cinq : structs sur les parseurs, puis relire le C.
Les xrefs achètent des jours. Un global suspect : n’inventez pas qui écrit — ouvrez les références. Les écrivains sont souvent des parseurs, les lecteurs des consommateurs. Nommez les deux bouts, la chaîne d’appels se montre. Les signets sont « je reviens demain » ; les commentaires sont hypothèses et contre-preuves, pas un tas de TODO.
Les scripts pour le répétitif : renommage de masse, tags sur motifs de chaînes, export de listes. Commencez par les scripts fournis. Headless sert à la CI sur vos artefacts : importer chaque release, vérifier que les fonctions clés tiennent et que la table d’imports n’a pas gagné une bibliothèque de trop. Hygiène, pas exercice d’attaque.
Échecs habituels : Java, RAM, polices, bureau distant, comptes du quotidien
Les échecs de lancement sont souvent Java. Le java Homebrew peut être 25, l’image entreprise coincée en 17, Ghidra 12.1 veut 21. Épinglez Temurin 21 avec JAVA_HOME. Ensuite le tas : un gros firmware fige l’UI. Montez le heap à côté des scripts de lancement et fermez les onglets maquettes.
HiDPI et bureau distant (VNC du Mac cloud compris) tordent polices et séparateurs. Une taille lisible deux heures. Gardez le projet hors iCloud/OneDrive — la synchro déchire les .rep. Disque local, archives à vous.
Hygiène : pas de cloud perso, pas de SSH de prod, pas de clés permanentes de l’entreprise sur la machine d’analyse. Ghidra est un lecteur ; le risque est l’échantillon et ce qui est encore connecté. Un Mac cloud dédié existe pour snapshotter, revenir en arrière, et laisser propre le portable sur vos genoux.
FAQ
Ghidra 12.1.3 tourne-t-il sur Apple Silicon ?
Oui. Application Java : JDK 21 aarch64. Mach-O en AARCH64 ; debug via LLDB. Reconstruire les natives depuis le ZIP si le décompilateur se plaint, voir Getting Started.
Faut-il 12.1.3, ou 11.x suffit ?
D’anciens projets peuvent s’ouvrir ; changez quand même de runtime. 12.1 exige JDK 21 et 12.1.3 corrige des soucis des 12.1 plus anciens. Une machine neuve part du public actuel.
Puis-je livrer le C décompilé comme source ?
Non. Pseudo-C deviné. Types, alias et flot optimisé mentent. Aide à la lecture, pas une restauration compilable. Une conclusion a besoin du Listing et du comportement observé.
Puis-je analyser des malwares ?
Oui, avec un cadre de recherche licite et un environnement isolé. N’ouvrez pas d’échantillons inconnus sur l’OS du quotidien, ne les posez pas sur un partage sans contrôle. Cet article ne traite ni l’exploitation ni la diffusion.
Ghidra 12 · machine d’analyse isolée
Sortir la décompilation du portable du quotidien
Ghidra 12.1 veut JDK 21, les gros fichiers mangent la RAM, le débogage veut une pile LLDB/Python propre. Rien de tout cela ne doit partager le disque du profil navigateur, de la messagerie pro et des clients de synchro. Un Mac mini cloud consomme peu, snapshotte proprement, et la bande passante mémoire Apple Silicon tient une analyse de nuit. Quand vous l’éteignez, l’échantillon n’est plus sur vos genoux.