Навык Claude Code для обратного проектирования 32-битных little-endian x86 C++ бинарников (таблицы виртуальных методов, RTTI, восстановление наследования)
Навык Claude Code для обратной разработки 32-битных little-endian x86 (IA-32) бинарников и дизассемблированного кода, скомпилированного из C++. Восстанавливает layouts классов, vtables, виртуальную диспетчеризацию и иерархии RTTI/наследования из ELF- или PE-бинарников, а также охватывает рабочие процессы, которые возникают после получения этой структуры: восстановление пользовательского формата файла, сопоставление индексированных записей файла данных с кодом/сущностью, которая их использует, и распознавание обфускации или приёмов антиотладки по ходу дела.
Создан для использования агентом: SKILL.md — это точка входа, которую читает агент, написанная так, чтобы механическая, хорошо специфицированная работа (ABI-структуры, разрешение релокаций, деманглинг символов) была вынесена вперёд в структурированный JSON через scripts/recon.py, а не тратилась как усилие рассуждения на сырой дизассемблированный код. Всё изящно деградирует до ручных рецептов objdump/readelf/nm/GDB, если более продвинутый инструментарий (radare2, LIEF, Triton) недоступен.
| Область | Автоматизировано? | Где |
|---|---|---|
ELF/Itanium ABI (GCC/Clang, _Z-манглинг): vtables, RTTI, множественное/виртуальное наследование | Да -- scripts/recon.py | references/itanium-abi.md |
PE/MSVC ABI (?-манглинг): __thiscall, vftable, Complete Object Locator, vbtable, сканирование stripped .rdata | Вручную / скриптом | references/msvc-abi.md |
| Автоматизированное восстановление C++ классов через OOAnalyzer (Pharos / SWI-Prolog) | Да -- CLI / JSON | references/tool-recipes.md §12 |
| Атрибуция полей таблиц данных и восстановление структур (анализ шага, конверты смещений, вывод типов) | Ручной рецепт (REWARDS/TIE) | references/tool-recipes.md §13 |
| Программный анализ бинарников (свиперы непосредственных xref, рекурсивный дизассемблер, обнаружение границ) | Скриптуемо (Python + Capstone + LIEF) | references/tool-recipes.md §14 |
| Загрузчики пользовательских бинарных форматов файлов (без участия C++ классов) | Ручной рецепт | references/tool-recipes.md §9 |
| Восстановление привязки ресурсов: сопоставление индексированных записей файла данных с кодом/владельцем, который их использует | Ручной рецепт + scripts/backward_slice.py (обратное срезание на основе Triton) | references/tool-recipes.md §10 |
| Динамический анализ WinDbg/DbgEng (нативные Windows PE-бинарники, к которым GDB не может подключиться) | Ручной рецепт | references/tool-recipes.md §11 |
| Распознавание обфускации (мусорный код, непрозрачные предикаты, приёмы уклонения от xref) | Ручной рецепт | references/obfuscation.md |
| Распознавание техник антиотладки | Ручной рецепт | references/anti-debugging.md |
objdump, readelf, nm, c++filt, gdb (стандартные binutils/GDB, присутствуют почти на любой Linux-машине).r2pipe, и pip install lief capstone pwntools -- открывает автоматизированные/структурированные рецепты; без них в references/tool-recipes.md есть ручные запасные варианты для всего.scripts/backward_slice.py: triton-library (проект бинарного анализа JonathanSalwan/Triton) в выделенном virtualenv -- не выполняйте pip install triton-library в своё обычное окружение, если у вас установлен какой-либо ML-инструментарий (PyTorch, vLLM и т. д.), поскольку не связанный с этим пакет OpenAI для компиляции GPU-ядер также импортируется как triton, и они конфликтуют. См. AGENTS.md и docstring самого скрипта.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 подхватит его автоматически для запросов вроде «что делает этот .exe», «восстанови иерархию классов из этого бинарника» или «почему это падает внутри виртуального вызова» -- полные условия срабатывания см. в описании SKILL.md.
SKILL.md точка входа: рабочий процесс, шаги триажа, таблица антирационализации, критерии выхода
AGENTS.md инструкции для агентов, редактирующих собственное содержимое этого репозитория
scripts/recon.py статический триаж на основе LIEF + восстановление vtable/RTTI Itanium ABI
scripts/backward_slice.py обратное срезание на основе Triton (нужен собственный venv, см. выше)
references/itanium-abi.md детали ELF/Itanium ABI
references/msvc-abi.md детали PE/MSVC ABI
references/tool-recipes.md конкретные команды, по задачам (от триажа до §14)
references/obfuscation.md распознавание намеренной обфускации
references/anti-debugging.md распознавание техник антиотладки
Если вы расширяете собственное содержимое этого навыка (а не просто используете его против целевого бинарника), сначала прочитайте AGENTS.md -- в частности, его норму о проверке внешних ссылок на инструменты/библиотеки/статьи по первоисточнику, прежде чем они попадут в references/*.md.