如何用多Agent搭建逆向分析框架——从BitWarden的工程实践说起

2026/06/19 sec reverse-engineering · multi-agent · AI · MCP · framework 8993 字 · 约 26 分钟 阅读 ...

如何用多Agent搭建逆向分析框架——从BitWarden的工程实践说起

原文作者:BitWarden(看雪论坛ID) 原文链接:打破传统AI逆向的新思路:多Agent、自主管理上下文 本文基于看雪论坛精华文章进行深度扩展,结合2025-2026年最新的MCP协议生态和开源Multi-Agent RE项目补充系统性实践指引

一、引言:五个痛点与一个范式突破

如果你用AI辅助逆向过大型商业软件,一定对这些场景不陌生:

痛点现象根因
古法主导大部分工作靠人工定位和勘探,AI只是辅助角色缺乏以AI为主的分析范式
上下文脆弱几十轮对话后信息丢失,重开窗口就从头再来缺乏持久化的上下文管理
发散不可控AI思维链走错分支,打断后分析路径全丢缺乏分支管理和审查机制
不懂逆向手法AI能读懂汇编,但不知道如何还原为C++代码缺乏领域知识(Skills)注入
上下文爆掉大型函数汇编超过模型注意力窗口单上下文承载能力已达天花板

问题是:为什么传统的”一个窗口、一个对话、一个AI”模式解决不了?

因为逆向工程的本质是多路径探索 + 多维度交叉验证——你需要在多个函数间跳转、同时维持多条分析假设、在不同模块间建立关联。单Agent流式对话天生无法支撑这种工作模式。

解决方案指向一个明确的方向:多Agent分解 + 结构化上下文 + 置信度状态机。看雪论坛的 BitWarden 提出了这一套框架的设计思路,而2025-2026年开源的多个项目(ida-procon、RE-AI、GhidraMCP等)已经用实际数据验证了它的可行性。

二、核心思路:三个支柱

BitWarden 的设计围绕三个支柱展开,每条都有实际开源项目背书。

支柱1:多Agent隔离

┌─────────────────────────────────────────┐
│             主Agent(主脑)              │
│  - 用户交互 / 任务拆解 / 指挥调度        │
│  - 参考:ida-procon Coordinator         │
└────────────┬────────────────┬────────────┘
             │                │
     ┌───────┴───────┐ ┌────┴────────┐
     │  Worker Agent │ │  Judge Agent│
     │  (执行分析)    │ │  (审查验证)  │
     └───────────────┘ └─────────────┘

多Agent的好处:上下文隔离(汇编分析不污染决策上下文)、可同时使用不同模型(主Agent用推理型,Worker用执行型)、可扩展(复杂度增加时增加子Agent即可)。

实际验证:开源项目 ida-procon(⭐9) 跑过一个真实基准测试——对一个M68K架构的693个函数的二进制文件,调度 20个并行Agent,约80分钟、花费约$15,完成了100%的覆盖率并自主提取了Flag。对比实验显示:没有procon的同一模型,在693个裸.c文件中grep搜索了17个函数后耗尽上下文,最终失败。 有procon的Agent通过Contour图直接导航到目标函数,成功完成。这个对比,就是对”多Agent隔离”最有力的实证。

支柱2:结构化上下文管理

BitWarden将AI分析的产物分为两个维度:

<project>/
├── .artifacts/           ← AI分析的结构化产物
│   ├── index.yaml        ← 主索引(地址→路径)
│   ├── <binary>/         ← 每个目标一个目录
│   │   ├── classes/      ← 类信息
│   │   ├── functions/    ← 未归类函数
│   │   └── cross_refs/   ← 跨文件引用
│
└── .investigations/      ← AI的思考过程
    ├── 000-定位-<binary>/
    └── 001-<任务名>/

关键设计原则:

  • 树形结构 + 主索引 —— 文件系统即数据库,无需SQLite/RAG等重型方案
  • 产物与思考分离 —— .artifacts/ 存可信结果,.investigations/ 存分析路径
  • YAML格式 —— 轻量、易读、AI友好,避免工具调用开销

支柱3:置信度状态机

AI逆向最危险的假设:AI的产出是可信的。

flowchart LR
    A[draft] -->|Worker产出| B[candidate]
    B -->|Judge审查通过| C[confirmed]
    B -->|Judge审查驳回| D[rejected]
    C -->|有更新版本| E[superseded]
状态含义谁来写入
draft初始草稿Worker
candidate待审查Worker
confirmed用户亲手确认只有用户
rejected被驳回审查Agent提议,主Agent确认
superseded已被新版本替代系统自动

核心原则:AI永远写不到 confirmed。这是人类决策的保留地。

三、框架的完整设计

3.1 文件格式体系

BitWarden定义了四类产物文件:

类文件(class.yaml)

schema_version: 1
name: Animal
kind: class
methods:
  - name: speak
    address: '0x1400077c0'
    status: confirmed
    last_updated: 2026-04-30

方法文件(method.yaml)

name: speak
status: confirmed
signature: int __fastcall speak(void* this, int type)
high_level_code: |
  switch (type) {
    case 0: printf("Woof\n"); break;
    case 1: printf("Meow\n"); break;
  }
vtable_index: 2

未归类函数(function.yaml)

address: '0x140007550'
status: candidate
asm_skeleton: |
  sub     rsp, 28h
  mov     eax, [rcx+8]
  add     eax, [rcx+0Ch]
  add     rsp, 28h
  retn
high_level_code: |
  return this->field_8 + this->field_C;

跨文件引用(cross_refs.yaml)

编号: xref_001
状态: confirmed
:
  binary: bar.exe
  地址: '0x140003200'
:
  binary: foo.dll
  : Animal
  方法名: speak
关系类型: 调用
证据: 间接调用[rcx+8], rcx在0x14000312A处加载Animal::vftable

3.2 版本管理

逆向是迭代过程,BitWarden设计了完善的历史版本机制:

classes/Animal/methods/
├── speak.yaml          ← 当前活跃版本(v3,confirmed)
├── speak.v1.yaml       ← 第一次分析(rejected,被当作普通函数)
├── speak.v2.yaml       ← 第二次分析(superseded,识别为方法但不准)
├── speak.b1.yaml       ← fan-out 候选1(djb2假设,rejected)
├── speak.b2.yaml       ← fan-out 候选2(CRC32假设,superseded)
└── speak.b3.yaml       ← fan-out 候选3(实际确认的版本)

命名规则:<name>.yaml 为当前活跃版本,<name>.vN.yaml 为时间线历史版本,<name>.bN.yaml 为并行分支候选。

3.3 文件迁移机制

逆向的典型路径:从函数到方法,从面向过程到面向对象。早期定位到的函数随着分析深入会被归类到类下。自动化迁移流程:

  1. 在新位置创建文件:classes/<X>/methods/<name>.yaml
  2. 更新主索引:path → 新位置,kind → method
  3. 更新类清单(class.yaml
  4. 删除旧位置函数文件

四、Skills与知识体系

4.1 Knowledge:蒸馏自己的RE经验

BitWarden提到一个关键点:AI不懂逆向手法。虽然能读懂汇编,但不知道如何从汇编骨架还原为高级C++代码。解决方法是蒸馏自己的RE经验为知识库

knowledge/
├── INDEX                        ← 全局索引
├── lift-reduction-principles/   ← 高精度还原方法论
├── class-identification/        ← 类识别方法
├── algorithm-patterns/          ← 算法模式库(AES/MD5/CRC/Base64变种)
└── anti-RE-techniques/          ← 反逆向技术应对(花指令/控制流平坦化)

4.2 Lift Skills:高精度还原五步法

针对精度要求99.9%以上的算法还原,BitWarden设计了结构化流程:

步骤名称内容
1骨架还原提取控制流壳(if/while/for/switch),函数体用占位符
2逐行机械翻译asm → C伪代码,变量名保留寄存器名
3签名草稿从调用方推断调用约定和参数个数
4优化寄存器识别、中间寄存器折叠、内存操作分类、lea处理
5语义折叠识别算法模式、赋予有意义变量名、修正签名

实操提示:前两步可以交给Worker Agent批量完成(用GLM 5.1等便宜模型),后两步需要主Agent介入推理(用DeepSeek V4/Claude)。这个分工可以大幅降低成本。

4.3 Class-Identify Skills

大规模面向对象逆向的系统化流程:

  1. RTTI优先 —— 有RTTI时直接获取继承图、类名、虚函数表
  2. 无RTTI时用户给起点 —— 指定某个ctor/thiscall方法地址
  3. vtable列虚方法 —— 通过虚函数表枚举所有虚方法
  4. thiscall偏移聚类 —— 按[this+N]偏移聚类识别非虚方法
  5. 方法体汇总成员 —— 配合方法体还原,汇总偏移获取成员清单

五、2025-2026实操:MCP生态与多Agent工具链

BitWarden的框架是”手动工程化”的典范。而在2025-2026年,MCP(Model Context Protocol)和一系列开源项目已经将这个范式推向可实操的阶段

5.1 逆向MCP Server完整对比

目前可用的逆向MCP Server已覆盖从静态分析到动态调试的完整链条:

项目平台工具数特点
GhidraMCPGhidra9.3k核心首个LLM自主逆向MCP,支持Claude/Cline
Heretek-RE/RE-AI全平台31个MCP最完整的逆向MCP工具链,含技能
Ghidra Headless MCPGhidra93212无头模式+容器化部署
r0idamcpIDA Pro8120+中文项目,SSE协议,r0ysue开发
IX64MCPIDA+x64dbg6静动联合唯一同时连接IDA和x64dbg
Binary Ninja MCPBN21418136个功能组,headless
JS Reverse MCPChrome1.9k21专为Agent设计的JS逆向
Reversecore MCP多引擎65综合Ghidra+Radare2+YARA
Recaf MCPJava8核心Java字节码逆向

5.2 重点工具实操

GhidraMCP(⭐9.3k)—— AI逆向的”入门级”工具

GhidraMCP是目前最成熟、社区最活跃的逆向MCP方案。安装三步走:

# 1. Ghidra中安装插件
# File → Install Extensions → 选择GhidraMCP.zip

# 2. 启动MCP桥接服务器
python bridge_mcp_ghidra.py

# 3. Claude Desktop中配置
# 编辑 claude_desktop_config.json

Agent获得的能力:反编译二进制、自动重命名方法/数据、列出所有方法/类/导入/导出表、交叉引用分析。

r0idamcp(⭐81)—— 中文IDAmcp,开箱即用

由安全圈知名人士 r0ysue 开发,专注IDA Pro的MCP集成:

{
  "mcpServers": {
    "r0idamcp": {
      "url": "http://192.168.1.2:26868/sse",
      "type": "sse"
    }
  }
}

核心工具函数(可直接被Agent调用):

  • get_functions_page(page, page_size) —— 分页获取所有函数
  • decompile_function(func_addr) —— 反编译为伪代码
  • disassemble_function(func_addr) —— 反汇编为机器码
  • rename_function(func_addr, new_name) —— 重命名函数
  • set_function_prototype(func_addr, prototype) —— 设置函数原型
  • add_comment(address, comment) —— 添加注释
  • rename_local_variable(func_addr, old_name, new_name) —— 局部变量重命名

ida-procon(⭐9)—— 超大规模逆向实战验证

这是唯一一个有多Agent对比实验数据的项目。架构如下:

IDA Pro → ida_dump.py → Coordinator → N × Claude Code Agent
                                     ↓
                              Contour图(函数依赖关系)

真实测试数据

挑战架构函数数Agent数时间成本效果
Flare-On #2Go/x86-64~50207s~$3完整密码学管线重建
Flare-On #10M68K69320~80min~$15100%覆盖率+Flag提取
工业闭源二进制x6411,610615min$6948函数文档化

关键发现:无procon的Agent在693个函数中grep搜索17个后耗尽上下文。有procon的直接导航到目标函数。

IX64MCP(⭐6)—— 打通静态与动态的桥梁

唯一同时连接IDA(静态)和x64dbg(动态调试)的MCP方案,正好补上了BitWarden框架缺动态调试的短板。AI Agent可以:

  1. 在IDA中定位可疑函数(静态)
  2. 在x64dbg中下断点验证(动态)
  3. 根据调试结果更新注释和函数签名
  4. 生成patch方案

Heretek-RE/RE-AI(31个MCP)—— 完整的逆向MCP全家桶

最全面的选项:31个MCP服务器覆盖从反编译到报告生成的完整链条。核心组件:

类别MCP服务器用途
静态分析re-rizin, re-capa, re-yara, re-kaitai二进制特征提取与模式匹配
反编译re-llm-decompile基于LLM4Decompile的神经反编译
动态分析re-frida, re-gdb, re-android-dynamicFrida+GDB+Android动态分析
网络协议re-pcap, re-mitm2swagger, re-fuzz-replay流量分析与协议还原
报告re-report-writeAI自动生成逆向报告

安装方式:./install.sh 克隆全部31个MCP服务器,然后注册到Claude Code的 .mcp.json 中即可。

5.3 LLM4Decompile:从汇编到C的最后一公里

在写博文时,这个项目已经 ⭐6.7k。它解决的是逆向中最硬核的问题:把汇编翻译成可重编译的C代码

实际性能数据

模型参数可重执行率说明
V1.5 6.7B6.7B45.4%第一代
V2 9B9B64.9%基于Yi-Coder-9B,推荐
SK²Decompile更高两阶段:骨架恢复+标识符命名

实操Demo(基于Colab,无需GPU):

# 本地快速体验
# 1. 用GCC编译C代码
gcc -o out.o test.c -O0 -lm

# 2. 反汇编
objdump -d out.o > out.s

# 3. 提取目标函数的汇编指令
# 4. 送到LLM4Decompile翻译为C代码

5.4 crackme-agent-bench:测试你的Agent逆向能力

如果你搭建了多Agent框架,怎么验证它是否真正有效?crackme-agent-bench(⭐3)是专门为这个场景设计的基准测试:

  • v1任务:多阶段crackme,含反调试、链式阶段、纯内存Flag
  • v2任务:控制流平坦化、加密常量混淆、TLS打包器、散落完整性检查

配套工具 veh-debugger——一个VEH(向量异常处理)进程内调试器,封装为MCP工具供Agent调用。

六、模型选择与成本策略

6.1 BitWarden的配置

  • 主Agent → DeepSeek V4(强推理能力,做决策和拆解任务)
  • Worker Agent → GLM 5.1(国产模型,性价比高,可内网部署)

6.2 ida-procon的成本数据

这个项目提供了真实的成本参考(按Claude Sonnet计价):

任务规模函数数Agent数时间成本
小(一个DLL)~501-2~3min~$3
中(完整二进制)~70020~80min~$15
大(工业级)11,610615min$6

6.3 模型选择策略的通用原则

层级推荐模型理由
主Agent决策DeepSeek V4 / Claude Sonnet推理能力强,负责任务拆解和路径判断
Worker分析GLM 5.1 / Qwen 3 / Gemini 2.5性价比高,批量分析不心疼token
本地机密分析Llama 4 / Qwen 3本地版敏感代码不出内网
神经反编译LLM4Decompile 9B专门微调模型,传统通用LLM做不到

实操建议:用便宜的Worker批量产出candidate级别结果,用推理型主Agent做最终判断。这个组合可以将成本降低50%-70%。

七、从零搭建你的多Agent逆向框架:实操路线图

下面是一条经过实战验证的渐进式搭建路线,每一步都可以独立使用:

Level 0:一个人也能用(1天)

目标:建立基本的上下文管理

# 最简单的目录结构
<project>/
├── .artifacts/           ← 存产物
│   └── index.yaml        ← 手动维护索引
└── .investigations/      ← 存分析记录

操作:每次AI分析结果手工保存到对应目录。这个习惯比你用什么框架都重要。

Level 1:引入MCP工具(2天)

目标:让Agent能操作逆向工具

安装GhidraMCP或r0idamcp中的一个,配置到Claude Desktop。验证Agent能否:

  • 反编译指定函数 ✅
  • 重命名函数 ✅
  • 添加注释 ✅
  • 搜索交叉引用 ✅

Level 2:多Agent并行(1周)

目标:用ida-procon或类似方案跑通多Agent

选择工具链入口:

  • 有IDA Pro → 用ida-procon(Coordinator+N个Agent)
  • 无IDA Pro → 用Ghidra Headless MCP + RE-AI
  • 需要动态调试 → 配置IX64MCP

验证基准:用crackme-agent-bench测试你的Agent能否通过v1挑战。

Level 3:私有知识库注入(持续)

目标:蒸馏自己的逆向经验

  1. 整理你的算法模式库(常见的AES/CRC/MD5/Base64变种特征)
  2. 整理编译优化模式(不同编译器/优化等级的反编译特征)
  3. 整理壳特征库(UPX/VMProtect/自定义壳的入口特征)
  4. 将上述内容写作MCP Resource或Prompt Template

验证:让Agent分析一个你以前手动分析过的软件,对比效率提升。

八、局限与展望

当前局限

局限说明解决方向
动态调试Agent化不成熟IX64MCP等方案才起步关注IX64MCP、veh-debugger的后续发展
Worker准确率依赖基模严重混淆下Worker产出置信度很低用SK²Decompile的两阶段方案提升
知识库质量决定天花板框架效果取决于你蒸馏了多少经验从小而精的模式库开始,逐步扩充
生态系统碎片化不同MCP Server间缺乏统一标准关注RE-AI的31合一组装方案

2025-2026趋势

趋势代表项目状态
端到端神经反编译LLM4Decompile V2 9B✅ 可用,64.9%可重执行率
Agent原生逆向工具GhidraMCP / r0idamcp✅ 生产可用
超大规模并行ida-procon 20 Agents✅ 已验证
MCP全工具链集成RE-AI 31件套✅ 可部署
静动态联合调试IX64MCP (IDA+x64dbg)⚠️ 早期
基准测试标准化crackme-agent-bench⚠️ 起步
小模型反编译专项化LLM4Decompile / VarBERT✅ 可用

写在最后

BitWarden在原文中说了一句话很对:“不推荐直接使用,可以利用这种设计打造属于自己的’逆向工程sln’“

从实际落地的角度看,建议你:

  1. 先建立目录结构 —— 从 .artifacts/ + .investigations/ 开始,这是最有价值的习惯
  2. 再装一个MCP Server —— GhidraMCP或r0idamcp,体验Agent直接操作逆向工具
  3. 加一个置信度状态机 —— 哪怕只有 candidate → confirmed 两级
  4. 跑一次基准测试 —— 用crackme-agent-bench验证你的框架是否真的有效
  5. 最后,写你的第一个Skill —— 把你最擅长的逆向手法写成可复用的SKILL.md

如果你的分析工作还停留在”打开一个窗口、粘贴代码、等回复、复制结果”,那么这套框架的价值就是:让逆向从”手艺活”变成”工程活”——可审计、可回溯、可复用。


参考来源:

  1. 打破传统AI逆向的新思路:多Agent、自主管理上下文 —— BitWarden,看雪论坛精华文章,2026-06-18
  2. GhidraMCP: LLM-powered Ghidra Analysis — ⭐9.3k
  3. ida-procon: Parallel LLM Agents for Autonomous RE — 首个多Agent RE对比实验数据
  4. r0idamcp: IDA Pro MCP Server — r0ysue中文项目
  5. Heretek-RE/RE-AI: 31 MCP Servers for RE — 最完整的RE MCP工具链
  6. IX64MCP: IDA + x64dbg联合MCP — 静动态联合
  7. LLM4Decompile: Neural Decompilation — ⭐6.7k
  8. JS Reverse MCP: Agent-first JS RE — ⭐1.9k
  9. crackme-agent-bench: AI Agent RE Benchmark
  10. 看雪课程《AI辅助逆向分析》,讲师:执着的猫

文档信息