
32ビットリトルエンディアンx86 C++バイナリ(vtable、RTTI、継承の復元)をリバースエンジニアリングするためのClaude Codeスキル
C++ からコンパイルされた 32 ビットリトルエンディアン x86 (IA-32) バイナリおよび逆アセンブリをリバースエンジニアリングするための Claude Code スキル。ELF または PE バイナリからクラスレイアウト、vtable、仮想ディスパッチ、RTTI/継承階層を復元し、その構造を把握した後に発生するワークフロー -- カスタムファイルフォーマットの復元、データファイルのインデックス付きエントリをそれを使用するコード/エンティティにマッピングすること、そしてその過程で難読化やアンチデバッグのトリックを認識すること -- をカバーします。
エージェントでの使用を想定して構築されています: SKILL.md はエージェントが読むエントリポイントであり、機械的で仕様が明確な作業 (ABI 構造体レイアウト、リロケーション解決、シンボルデマングリング) が、生の逆アセンブリに対する推論リソースとして費やされるのではなく、scripts/recon.py を介して構造化 JSON に前倒しで処理されるように書かれています。より高度なツール (radare2、LIEF、Triton) が利用できない場合でも、すべては手動の objdump/readelf/nm/GDB レシピに優雅にフォールバックします。
| 領域 | 自動化? | 場所 |
|---|
ELF/Itanium ABI (GCC/Clang、_Z マングリング): vtable、RTTI、多重/仮想継承 | はい -- scripts/recon.py | references/itanium-abi.md |
PE/MSVC ABI (? マングリング): __thiscall、vftable、Complete Object Locator、vbtable、ストリップされた .rdata のスキャン | 手動 / スクリプト | references/msvc-abi.md |
| OOAnalyzer (Pharos / SWI-Prolog) による自動 C++ クラス復元 | はい -- 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 動的解析 (GDB がアタッチできないネイティブ Windows PE バイナリ) | 手動レシピ | 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 にインストール -- ML ツール (PyTorch、vLLM など) がインストールされている場合、通常の環境に pip install triton-library を実行しないでください。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 entry point: workflow, triage steps, anti-rationalization table, exit criteria
AGENTS.md instructions for agents editing this repo's own content
scripts/recon.py LIEF-based static triage + Itanium ABI vtable/RTTI recovery
scripts/backward_slice.py Triton-based backward slicing (needs its own venv, see above)
references/itanium-abi.md ELF/Itanium ABI details
references/msvc-abi.md PE/MSVC ABI details
references/tool-recipes.md concrete commands, by task (triage through §14)
references/obfuscation.md recognizing deliberate obfuscation
references/anti-debugging.md recognizing anti-debugging techniques
このスキル自体のコンテンツを拡張する場合 (単に対象バイナリに対して使用するだけでなく)、まず AGENTS.md を読んでください -- 特に、外部ツール/ライブラリ/論文の引用が references/*.md に反映される前に一次情報源と照合して検証するという規範に注意してください。