Vue lecture

OGhidra - Dopage à l'IA pour Ghidra en local

Les gars de chez LLNL (Lawrence Livermore National Laboratory) sont des bons ! De vrais spécialistes en sécurité informatique qui ont pondu un outil à essayer si vous passez vos journées dans les entrailles des binaires.

Ça s'appelle OGhidra , et c'est une extension qui fait le pont entre le célèbre framework de reverse engineering Ghidra et la puissance des modèles de langage (LLM).

Comme ça, plutôt que de vous péter les yeux sur des milliers de lignes de code décompilé, vous pouvez simplement "discuter" avec les fonctions ou les strings extraites. Grâce à une intégration avec Ollama, OGhidra permet d'interroger les représentations du binaire en langage naturel pour identifier des vulnérabilités, renommer intelligemment des fonctions ou expliquer des algorithmes complexes. Attention toutefois, comme avec tout LLM, les résultats doivent être validés manuellement (les hallucinations, ça arrive même aux meilleurs !).

Le gros avantage ici, vous l'aurez compris, c'est la privacy car tout tourne en local sur votre ordi. L'extension utilise des techniques comme le RAG (Retrieval-Augmented Generation) pour garder le contexte de vos sessions et le CAG (Cache-Augmented Generation) pour optimiser les performances. Prévoyez quand même une machine solide car pour faire tourner des modèles comme gemma3 confortablement, 32 Go de RAM (et une bonne dose de VRAM) ne seront pas de trop.

Pour que ça envahisse vos machines de reverse engineer, il vous faudra Ghidra 11.3 minimum et JDK 17. L'installation se fait ensuite en deux temps : d'abord le plugin GhidraMCP à ajouter dans Ghidra, puis le composant Python à récupérer sur GitHub :

git clone https://github.com/LLNL/OGhidra.git
cd OGhidra
pip install -r requirements.txt

Une fois Ollama lancé avec vos modèles préférés, vous allez pouvoir automatiser les tâches les plus reloues. Par exemple grâce aux boutons "Smart Tool" dans l'interface de Ghidra vous allez pouvoir renommer toutes les fonctions d'un coup ou générer un rapport de sécurité (à prendre comme une base de travail, pas comme une vérité absolue, hein ^^).

C'est beau mais ça fait mal quand on pense au temps qu'on a perdu par le passé ! Et si vous kiffez ce genre d'approches, jetez aussi un œil à Cutter qui propose une intégration optionnelle du décompileur de Ghidra, ou encore à DecompAI .

Voilà, j'ai trouvé ça intéressant pour booster Ghidra avec une petite dose d'intelligence locale.

  •  

Top Gun NES - Le mystère de l'atterrissage sur porte-avions enfin résolu

Vous vous souvenez de Top Gun sur NES ? Ce jeu culte des années 80 où vous incarniez Maverick dans des combats aériens endiablés ? Hé bien si vous y avez joué, vous avez forcément vécu LE traumatisme du jeu : l'atterrissage sur le porte-avions.

Je ne sais pas combien de manettes ont été explosées à cause de cette séquence de torture, mais ça doit se compter en millions. Vous avez beau suivre les instructions à l'écran "Alt. 200 / Speed 288", faire exactement ce qu'on vous dit, et PAF... crash. Retour à la case départ.

Toutefois, c'était sans compter sur ce développeur qui a eu la bonne idée de faire du reverse engineering sur le code assembleur du jeu pour comprendre ce qui se passait vraiment derrière cette mécanique diabolique.

Et en fouillant dans les entrailles du code NES, il a découvert que pour réussir l'atterrissage, il fallait respecter 3 critères simultanément. D'après l'analyse du code, l'altitude doit être entre 100 et 299 (une plage plutôt large, ouf), la vitesse entre 238 et 337 (déjà plus serré), et surtout l'alignement latéral avec le porte-avions qui est lui ultra strict. Et c'est là que ça devient chaud, parce que ce dernier paramètre, on ne le voit pas à l'écran. Vous pouvez avoir l'altitude parfaite et la vitesse au poil, si vous êtes décalé de quelques pixels à gauche ou à droite, c'est muerto pépito.

La direction est stockée en mémoire comme un entier signé allant de -32 à +32, puis convertie en une plage de 0 à 7. Autant dire que la marge d'erreur est ridicule...

Le plus intéressant dans son reverse, c'est de voir comment le code vérifie tout ça. La fonction "landing_skill_check" fait des vérifications séquentielles super basiques avec des codes d'erreur du genre : Altitude hors limites ? Code d'erreur 2. Vitesse hors limites ? Code 4. Direction hors limites ? Code 8.

Et ces codes d'erreur déterminent même l'animation de crash que vous allez voir. Du coup, si vous crashez souvent de la même façon, c'est probablement toujours le même paramètre qui foire.

Les valeurs sont stockées en BCD (Binary Coded Decimal) pour faciliter l'affichage à l'écran, et on peut les trouver aux adresses $40-$41 pour la vitesse, $3D-$3E pour l'altitude, et $FD pour la direction. Le résultat de la vérification se retrouve à l'adresse $9E. Voilà, maintenant vous savez où regarder si vous voulez tricher avec un émulateur .

D'ailleurs, en parlant de triche, l'auteur de cette analyse a même créé un code Game Genie spécifique pour contourner toute cette galère : AEPETA. Tapez ça et vous atterrirez à tous les coups, peu importe à quel point vous pilotez comme un manche.

Bref, voilà un mystère de 35 ans enfin résolu grâce au reverse engineering. Et si vous voulez vous replonger dans cette torture en connaissance de cause, vous savez maintenant que c'est probablement l'alignement qui vous a eu, pas votre skill.

Source

  •  
❌