Compétence Claude Code pour la rétro-ingénierie de binaires C++ x86 32 bits little-endian (vtables, RTTI, récupération d'héritage)
Une compétence Claude Code pour le reverse-engineering de binaires x86 32 bits little-endian (IA-32) et de désassemblage compilé depuis C++. Récupère les dispositions de classes, vtables, dispatch virtuel et hiérarchies RTTI/héritage depuis des binaires ELF ou PE, et couvre les workflows qui apparaissent une fois cette structure obtenue : récupérer un format de fichier personnalisé, faire correspondre les entrées indexées d'un fichier de données au code/à l'entité qui les utilise, et reconnaître les astuces d'obfuscation ou d'anti-débogage en cours de route.
Conçu pour un usage par agent : SKILL.md est le point d'entrée qu'un agent lit, rédigé de sorte que le travail mécanique et bien spécifié (dispositions de structures ABI, résolution de relocations, démangling de symboles) soit traité en amont dans un JSON structuré via scripts/recon.py plutôt que consommé comme effort de raisonnement sur du désassemblage brut. Tout se dégrade gracieusement vers des recettes manuelles objdump/readelf/nm/GDB si l'outillage plus sophistiqué (radare2, LIEF, Triton) n'est pas disponible.
| Domaine | Automatisé ? | Où |
|---|---|---|
ABI ELF/Itanium (GCC/Clang, mangling _Z) : vtables, RTTI, héritage multiple/virtuel | Oui -- scripts/recon.py | references/itanium-abi.md |
ABI PE/MSVC (mangling ?) : __thiscall, vftable, Complete Object Locator, vbtable, scan de .rdata strippé | Manuel / Scripté | references/msvc-abi.md |
| Récupération automatisée de classes C++ via OOAnalyzer (Pharos / SWI-Prolog) | Oui -- CLI / JSON | references/tool-recipes.md §12 |
| Attribution de champs de tables de données et récupération de structures (analyse de stride, enveloppes de déplacement, inférence de types) | Recette manuelle (REWARDS/TIE) | references/tool-recipes.md §13 |
| Analyse programmatique de binaires (balayeurs de xrefs immédiats, désassemblage récursif, détection de frontières) | Scriptable (Python + Capstone + LIEF) | references/tool-recipes.md §14 |
| Chargeurs de formats de fichiers binaires personnalisés (aucune classe C++ impliquée) | Recette manuelle | references/tool-recipes.md §9 |
| Récupération de liaison de ressources : faire correspondre les entrées indexées d'un fichier de données au code/propriétaire qui les utilise | Recette manuelle + scripts/backward_slice.py (backward slicing basé sur Triton) | references/tool-recipes.md §10 |
| Analyse dynamique WinDbg/DbgEng (binaires PE Windows natifs auxquels GDB ne peut pas s'attacher) | Recette manuelle | references/tool-recipes.md §11 |
| Reconnaître l'obfuscation (code inutile, prédicats opaques, astuces d'évasion de xrefs) | Recette manuelle | references/obfuscation.md |
| Reconnaître les techniques d'anti-débogage | Recette manuelle | references/anti-debugging.md |
objdump, readelf, nm, c++filt, gdb (binutils/GDB standard, présents sur presque toute machine Linux).r2pipe, et pip install lief capstone pwntools -- débloque les recettes automatisées/structurées ; sans eux, references/tool-recipes.md propose des solutions manuelles de repli pour tout.scripts/backward_slice.py uniquement : triton-library (le projet d'analyse binaire JonathanSalwan/Triton) dans un virtualenv dédié -- ne faites pas pip install triton-library dans votre environnement habituel si vous avez le moindre outillage ML installé (PyTorch, vLLM, etc.), car le paquet sans rapport d'OpenAI pour compilateur de noyaux GPU est également importable sous le nom triton et les deux entrent en collision. Voir AGENTS.md et la docstring du script lui-même.git clone [email protected]:gavmor/x86-cpp-reversing-skill.git ~/.agents/skills/x86-cpp-reversing
ln -s ~/.agents/skills/x86-cpp-reversing ~/.claude/skills/x86-cpp-reversing
Claude Code le détectera automatiquement pour des prompts comme « que fait ce .exe », « récupère la hiérarchie de classes depuis ce binaire » ou « pourquoi cela plante-t-il à l'intérieur d'un appel virtuel » -- voir la description de SKILL.md pour les conditions de déclenchement complètes.
SKILL.md point d'entrée : workflow, étapes de triage, table d'anti-rationalisation, critères de sortie
AGENTS.md instructions pour les agents qui éditent le contenu de ce dépôt lui-même
scripts/recon.py triage statique basé sur LIEF + récupération vtable/RTTI de l'ABI Itanium
scripts/backward_slice.py backward slicing basé sur Triton (nécessite son propre venv, voir ci-dessus)
references/itanium-abi.md détails de l'ABI ELF/Itanium
references/msvc-abi.md détails de l'ABI PE/MSVC
references/tool-recipes.md commandes concrètes, par tâche (du triage jusqu'au §14)
references/obfuscation.md reconnaître l'obfuscation délibérée
references/anti-debugging.md reconnaître les techniques d'anti-débogage
Si vous étendez le contenu de cette compétence elle-même (et pas seulement son utilisation contre un binaire cible), lisez d'abord AGENTS.md -- en particulier sa norme sur la vérification des citations d'outils/bibliothèques/articles externes auprès de la source primaire avant qu'elles n'atterrissent dans references/*.md.