SuperAPI AI 工具集

re-cpp-abi

通用与其它

查看项目

更新于 10-15 21:35

技能介绍

用途:处理 RTTI/异常表密集、反编译结果混乱的 C++ 目标,恢复类层次、虚调用与异常流。不适用于纯 C 或纯汇编(走通用二进制路径),混淆主导的目标应先做去混淆。

主要能力:ABI 识别(Itanium 特征 _ZN/_ZTV/_ZTI,MSVC 特征 ??_7/??_R);RTTI 重建(_ZTI 指向 typeinfo,解析 __type_name 与继承链,MSVC 走 TypeDescriptor 与 COL);虚表恢复(_ZTV 指向 vtable,前缀含 offset to top 与 typeinfo 指针);异常处理表解析(ELF 的 .eh_frame/.gcc_except_table,PE 的 .pdata/.xdata 与 __CxxFrameHandler3);模板与 lambda 识别;mangling 批量解码。

使用方式:准备 readelf/llvm-objdump、c++filt/undname、Ghidra/IDA、可选 gdb。先做 ABI 识别,再按目标 ABI 解析 RTTI 与虚表,随后解析异常表,最后批量解码符号并写回反编译底座重命名。示例命令:readelf -s sample | grep -E '_ZN|_ZTV|_ZTI' | head;echo '_ZN3foo3barEv' | c++filt;llvm-readobj --coff-unwind-info sample.exe。

限制与注意:ABI 误判会导致全部解析错位,须先确认;模板实例化会造成符号爆炸,需按调用模式聚类并过滤标准库符号;lambda 的 closure type 是真实匿名类,普通调用常不发射独立 RTTI,缺 _ZTI 不能排除也不能反推;MSVC 异常处理版本不同会导致 .xdata 解析错位,需按导入函数确认版本;虚调用 call *reg 无法静态定名,只能结合 vtable 槽位与调用点证据缩小候选。