Skill di Claude Code per il reverse engineering di binari C++ x86 a 32 bit little-endian (vtable, RTTI, recupero dell'ereditarietà)
Una skill di Claude Code per il reverse engineering di binari x86 (IA-32) a 32 bit little-endian e del disassemblato compilato da C++. Recupera layout di classi, vtable, dispatch virtuale e gerarchie RTTI/ereditarietà da binari ELF o PE, e copre i flussi di lavoro che emergono una volta ottenuta quella struttura: recuperare un formato di file personalizzato, mappare le voci indicizzate di un file di dati al codice/entità che le utilizza, e riconoscere lungo il percorso tecniche di offuscamento o anti-debugging.
Progettata per l'uso da parte di agenti: SKILL.md è il punto di ingresso che un agente legge, scritto in modo che il lavoro meccanico e ben specificato (layout di struct ABI, risoluzione delle relocation, demangling dei simboli) sia anticipato in JSON strutturato tramite scripts/recon.py invece di essere speso come sforzo di ragionamento sul disassemblato grezzo. Tutto degrada con garbo verso ricette manuali objdump/readelf/nm/GDB se il tooling più sofisticato (radare2, LIEF, Triton) non è disponibile.
| Area | Automatizzato? | Dove |
|---|---|---|
ABI ELF/Itanium (GCC/Clang, con mangling _Z): vtable, RTTI, ereditarietà multipla/virtuale | Sì -- scripts/recon.py | references/itanium-abi.md |
ABI PE/MSVC (con mangling ?): __thiscall, vftable, Complete Object Locator, vbtable, scansione di .rdata stripped | Manuale / Scriptato | references/msvc-abi.md |
| Recupero automatico di classi C++ tramite OOAnalyzer (Pharos / SWI-Prolog) | Sì -- CLI / JSON | references/tool-recipes.md §12 |
| Attribuzione dei campi di tabelle dati e recupero di struct (analisi dello stride, inviluppi di displacement, inferenza dei tipi) | Ricetta manuale (REWARDS/TIE) | references/tool-recipes.md §13 |
| Analisi programmatica di binari (sweeper di xref immediati, disassemblaggio ricorsivo, rilevamento dei confini) | Scriptabile (Python + Capstone + LIEF) | references/tool-recipes.md §14 |
| Loader per formati di file binari personalizzati (nessuna classe C++ coinvolta) | Ricetta manuale | references/tool-recipes.md §9 |
| Recupero del binding delle risorse: mappare le voci indicizzate di un file di dati al codice/proprietario che le utilizza | Ricetta manuale + scripts/backward_slice.py (backward slicing basato su Triton) | references/tool-recipes.md §10 |
| Analisi dinamica con WinDbg/DbgEng (binari PE nativi Windows a cui GDB non può agganciarsi) | Ricetta manuale | references/tool-recipes.md §11 |
| Riconoscere l'offuscamento (junk code, predicati opachi, trucchi di evasione degli xref) | Ricetta manuale | references/obfuscation.md |
| Riconoscere tecniche di anti-debugging | Ricetta manuale | references/anti-debugging.md |
objdump, readelf, nm, c++filt, gdb (binutils/GDB standard, presenti su quasi qualsiasi macchina Linux).r2pipe, e pip install lief capstone pwntools -- sbloccano le ricette automatizzate/strutturate; senza di essi, references/tool-recipes.md contiene fallback manuali per tutto.scripts/backward_slice.py: triton-library (il progetto di analisi binaria JonathanSalwan/Triton) in un virtualenv dedicato -- non eseguire pip install triton-library nel tuo ambiente abituale se hai installato qualsiasi tooling ML (PyTorch, vLLM, ecc.), poiché il pacchetto non correlato di OpenAI per la compilazione di kernel GPU è anch'esso importabile come triton e i due entrano in conflitto. Vedi AGENTS.md e la docstring dello script stesso.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 la rileverà automaticamente per prompt come "cosa fa questo .exe", "recupera la gerarchia delle classi da questo binario" o "perché va in crash dentro una chiamata virtuale" -- vedi la descrizione in SKILL.md per le condizioni di attivazione complete.
SKILL.md punto di ingresso: workflow, passi di triage, tabella di anti-razionalizzazione, criteri di uscita
AGENTS.md istruzioni per gli agenti che modificano il contenuto di questo stesso repo
scripts/recon.py triage statico basato su LIEF + recupero vtable/RTTI dell'ABI Itanium
scripts/backward_slice.py backward slicing basato su Triton (richiede un venv dedicato, vedi sopra)
references/itanium-abi.md dettagli sull'ABI ELF/Itanium
references/msvc-abi.md dettagli sull'ABI PE/MSVC
references/tool-recipes.md comandi concreti, per attività (dal triage fino al §14)
references/obfuscation.md riconoscere l'offuscamento deliberato
references/anti-debugging.md riconoscere tecniche di anti-debugging
Se stai estendendo il contenuto di questa skill (non solo usandola contro un binario target), leggi prima AGENTS.md -- in particolare la sua norma sulla verifica delle citazioni di tool/librerie/paper esterni rispetto alla fonte primaria prima che finiscano in references/*.md.