用于逆向工程32位小端x86 C++二进制文件(虚表、RTTI、继承关系恢复)的Claude Code技能
一个用于逆向工程 32 位小端 x86(IA-32)二进制文件以及由 C++ 编译生成的汇编代码的 Claude Code 技能。它可以从 ELF 或 PE 二进制文件中恢复类布局、虚函数表、虚函数分发以及 RTTI/继承层次结构,并涵盖在获得这些结构后会遇到的工作流程:恢复自定义文件格式、将数据文件的索引条目映射回使用它们的代码/实体,以及在此过程中识别混淆或反调试技巧。
为智能体使用而构建:SKILL.md 是智能体读取的入口点,其编写方式使得机械性、定义明确的工作(ABI 结构体布局、重定位解析、符号还原)通过 scripts/recon.py 预先转化为结构化 JSON,而不是将推理精力花费在原始反汇编上。如果更高级的工具(radare2、LIEF、Triton)不可用,所有内容都可以优雅地降级为手动 objdump/readelf/nm/GDB 方案。
| 领域 | 自动化? | 位置 |
|---|---|---|
ELF/Itanium ABI(GCC/Clang,_Z 修饰):虚函数表、RTTI、多重/虚继承 | 是 -- scripts/recon.py | references/itanium-abi.md |
PE/MSVC ABI(? 修饰):__thiscall、vftable、完整对象定位器、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 |
| 程序化二进制分析(立即数交叉引用扫描器、递归反汇编、边界检测) | 可脚本化(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 |
| 识别混淆(垃圾代码、不透明谓词、交叉引用规避技巧) | 手动方案 | 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 二进制分析项目),需安装在专用虚拟环境中 -- 如果你安装了任何 ML 工具(PyTorch、vLLM 等),不要将 triton-library pip install 到你的常规环境中,因为 OpenAI 无关的 GPU 内核编译器包也可以作为 triton 导入,两者会冲突。参见 和脚本自身的文档字符串。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 的静态分类 + Itanium ABI 虚函数表/RTTI 恢复
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 之前,需对照原始来源进行验证的规范。
AGENTS.md