SuperAPI AI 工具集

binary-diff

安全与审计

查看项目

更新于 10-16 08:49

技能介绍

用途:当程序更新导致符号丢失、或新版 PDB 缺失(如 ntoskrnl.exe)时,把旧版已有的逆向结果和符号迁移到新版二进制。适合“有旧版符号 + 新版无符号”的对比场景;从零逆向或两个完全不同的二进制对比不适用(应使用 ida-reverse、radare2 或 BinDiff、Diaphora 等)。

主要能力:从旧版导出带符号的反汇编与伪代码,从新版导出同一锚点函数的无符号反汇编与伪代码,再用固定 prompt 模板调用 LLM 做结构化比对,输出 YAML 符号映射表。YAML 覆盖五类符号:found_vcall(虚函数调用,含 vfunc_offset、func_name)、found_call(直接调用)、found_funcptr(函数指针)、found_gv(全局变量)、found_struct_offset(结构体偏移,含 offset、struct_name、member_name)。解析后批量应用:found_call/found_funcptr/found_gv 映射为 idapro_rename,found_vcall/found_struct_offset 写入 idapro_set_comments。

使用方式:旧版加载到 IDA 并导出锚点函数的反汇编与伪代码,新版同样导出;用 prompt 模板填充 {disasm_for_reference}、{procedure_for_reference}、{disasm_code}、{procedure}、{symbol_name_list};调用 LLM 得到 YAML;用 PyYAML(pip install pyyaml)解析后批量应用;第一轮迁移的函数作为新锚点,迭代深入。锚点优先选导出函数、字符串引用,其次常量与代码模式。建议每次比对 1 个函数,中等函数用 DeepSeek,超大函数切 GPT-4o 或 Claude,可并发 10-20 并缓存结果。

依赖与限制:需要 IDA Pro(商业软件,不可自动安装)、Python、PyYAML 与 LLM API key。新版与旧版间若有大量重编译或混淆,对比质量会下降;结果需人工抽检,锚点错误会导致后续全部失效;超大函数受 context 限制需拆分。成本和模型建议为资料所述,实际效果暂未提供独立验证数据。