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 架构, 二进制分析, 二进制安全, 云安全运维, 云资产清单, 代码分析, 元数据解析, 凭证管理, 恶意代码分析, 研究原型, 类层次结构, 虚函数表, 虚表发现, 软件安全, 逆向工程, 逆向工程技术, 配置文件, 防御性分析