Youssix/IDAVtableRecovery

GitHub: IWishI808/IDAVtableRecovery

这是一个 IDA Pro 插件,用于从 x86-64 PE 二进制文件中自动发现 C++ 虚表并重建类层次结构。

Stars: 0 | Forks: 0

# IDA 虚表恢复 IDA 虚表恢复是一个 IDAPython 研究插件,用于从 x86-64 PE 二进制文件中发现 C++ 虚表、解析 MSVC RTTI 元数据并导出重建的类信息。 该项目专为逆向工程和防御性二进制分析设计。它帮助分析人员在剥离了符号的二进制文件中记录类布局,并分析虚函数分发、继承以及面向对象的控制流。 ## 已实现功能 - 扫描 `.rdata` 段以寻找连续的函数指针数组 - 对照可执行的 `.text` 段指针筛选虚表候选 - 解析 MSVC x64 `CompleteObjectLocator` - 解析 `TypeDescriptor`、`ClassHierarchyDescriptor` 和基类描述符 - 当 RTTI 可用时重建类层次结构 - 对无 RTTI 的剥离二进制文件进行启发式虚表评分 - 通过构造函数存储模式检查提高虚表可信度 - 将恢复的虚表和层次结构数据导出为 JSON 格式 - 导出重建的类骨架作为 C++ 头文件 ## 系统要求 - IDA Pro 7.x 或更高版本 - 通过 IDAPython 使用的 Python 3 - IDA 中加载的 x86-64 PE 二进制文件 ## 安装 将插件文件复制到您的 IDA 插件目录: ``` cp ida_vtable_recovery.py /plugins/ cp vtable_heuristics.py /plugins/ cp export_results.py /plugins/ ``` 或者将此仓库目录添加到您的 `IDAUSR` 路径中。 ## 使用方法 在 IDA 中,打开: ``` Edit > Plugins > Vtable Recovery ``` 编程方式使用: ``` from ida_vtable_recovery import VtableScanner from export_results import export_to_json, export_to_header scanner = VtableScanner() scanner.scan() export_to_json(scanner, "vtables.json") export_to_header(scanner, "classes.h") ``` ## 当前状态 该插件是一个实用的研究原型。RTTI 解析假设 MSVC x64 ABI,启发式恢复最好作为分析辅助工具,而非绝对真实依据。GCC/Clang RTTI、虚继承边界情况以及分裂的虚表还需要更多工作。 ## 负责任的使用 本项目用于逆向工程、恶意软件分析实验室和防御性二进制分析。它不修改目标二进制文件,也不提供漏洞利用功能。 ## 许可证 MIT
标签:C++ 头文件生成, C++ 类重建, IDA Pro 插件, IDAPython, JSON 导出, PE 文件分析, Python 编程, RTTI 解析, TLS抓取, x86-64 架构, 二进制分析, 二进制安全, 云安全运维, 云资产清单, 代码分析, 元数据解析, 凭证管理, 恶意代码分析, 研究原型, 类层次结构, 虚函数表, 虚表发现, 软件安全, 逆向工程, 逆向工程技术, 配置文件, 防御性分析