用 REA 把 IDA Pro 接入 MCP:GUI 附加与 Headless 数据库双模式完整避坑指南
用 REA 把 IDA Pro 接入 MCPGUI 附加与 Headless 数据库双模式完整避坑指南【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/reaREAReverse Engineer Anything是通过 MCP 协议把 AI Agent 接到逆向工程工具的开源项目。下面把对接 IDA Pro 的两条实操路径——GUI 附加模式复用 GUI 中已打开的数据库与Headless 数据库模式无界面自动建库——从注册 JSON、环境变量到首条分析命令逐一跑通并给出能力边界与自检排障清单。接入 REA 之后你的 IDA Pro 工作流多了什么 单独用 IDA Pro 时函数分析、字符串搜索都靠人工点击Agent 无法介入接入 REA 后Agent 可以直接调用analyze_function、search_strings这类 MCP 工具 每个结论都附带证据与限制说明截断、缺失会显式标出而不是黑盒输出 与 Hopper、Ghidra 共用同一套 CLI切换分析后端不改工作流 核心定位REA 不安装、不激活、不升级、不捆绑 IDA Pro只适配上游 ida-pro-mcp 服务器。你复用已有的 IDA 环境REA 不改动它的任何配置。GUI 附加还是 Headless一张对比表加三问判断维度GUI 附加模式Headless 数据库模式使用者人工交互逆向的工程师Agent、CI 流水线、批量自动化前置条件IDA GUI 已打开原始二进制上游装好 database supervisor API且与 REA 同主机适用场景边看边分析WSL Windows GUI 混合环境也可用批量分析、Agent 自动调查注册文件差异只复制上游command/args/env无 mode 字段必须写mode: headless也可用url指向本地 HTTP supervisor关闭后行为只释放连接不保存、不关闭 GUI 数据库用save: false释放会话删除私有临时工作区拿不准时按三问判断① IDA GUI 是否已经开着是 → 附加② 目标是批量或自动化吗是 → Headless③ 环境是 WSL 混合的吗是 → 只能用附加。首次接入步骤装环境、写注册 JSON、跑首条分析命令第 1 步安装 REA 并注册到 Agent。这条命令会完成安装并把 REA 注册到你使用的 Agent 客户端npx rea-agents setup第 2 步写上游 MCP 注册 JSON。这是附加模式的注册文件把一份可用的 ida-pro-mcp 注册中的command、args和可选env原样复制进来{ command: python, args: [ /absolute/path/to/ida_pro_mcp/server.py, --ida-rpc, http://127.0.0.1:13337 ] }第 3 步设置两个环境变量并跑首条分析命令。下面是完整的最小运行序列export REA_IDA_MCP_CONFIG/absolute/path/to/ida-mcp.json export REA_ANALYSIS_PROVIDERida rea function /absolute/path/to/program main --json拿到 JSON 输出即接入成功Headless 的注册 JSON 差异见下文场景小节。双场景实操从注册 JSON 到首条请求人工交互场景GUI 附加第 1 步在 IDA GUI 中打开原始输入二进制。注意是原始可执行文件不是.idb/.i64数据库。REA 会校验原始输入二进制的 SHA-256 与 IDA 记录的输入哈希是否一致不一致直接失败并给出恢复指引。⚠️ GUI 的/mcp端点是内部 RPC 端点REA 通过上游 stdio 代理连接不要把这个 URL 当 Streamable HTTP 用。切换分析目标前先让 REA 关闭当前连接避免身份校验冲突。第 2 步依次执行函数分析与反编译。附加 profile 支持上游 1.4.0 legacy 工具get_metadata、list_functions、decompile_function等rea function /absolute/path/to/program main --json rea decompile /absolute/path/to/program main --json结果是实时读取而非快照回放你在 GUI 里的外部编辑始终可见。REA 关闭操作只释放 MCP 连接绝不保存或关闭你的 GUI 数据库。自动化批量场景Headless 数据库第 1 步把注册 JSON 改为 Headless 模式。该模式要求上游版本支持 database supervisor APIidb_open、idb_list等旧版idalib-mcp单文件名 SSE 模式不适用{ command: idalib-mcp, args: [--stdio, --max-workers, 1], mode: headless }如你的 idalib 环境需要加env: { IDADIR: /absolute/path/to/ida }已部署本地 HTTP supervisor 时用url: http://127.0.0.1:8745/mcp替代command即可。第 2 步在同主机原生环境运行。下面是 Windows 原生 PowerShell 的完整序列$env:REA_IDA_MCP_CONFIG D:\analysis\ida-mcp.json $env:REA_ANALYSIS_PROVIDER ida rea function D:\samples\program.exe main --jsonREA 会把被接纳的二进制复制到私有临时目录POSIX 权限0700校验摘要后以force_headless申请独占 worker并把数据库 ID 注入分析请求。关闭或启动失败时用save: false释放会话、确认上游会话清单中已消失再删除私有输入与附属文件。⚠️ Hard 约束Headless 下 REA 与 supervisor 必须共享同一主机文件系统与原生路径语法。WSL Windows GUI 的混合场景只有 GUI 附加模式支持。原始二进制永远不会被执行或被覆盖。Agent 长期接入MCP 入口环境变量与标准调用序列这段配置把注册路径写进 REA 的 MCP 入口环境上游注册文件保持独立不动{ mcpServers: { rea: { command: npx, args: [-y, rea-agentsversion-with-ida, mcp], env: { REA_ANALYSIS_PROVIDER: ida, REA_IDA_MCP_CONFIG: /absolute/path/to/ida-mcp.json } } } }版本号必须是实际包含 IDA 适配器的版本仓库 main 分支可能领先于 npm 发布版。重连后Agent 按这个标准序列调用{name: open_binary, arguments: {path: /absolute/path/to/program, provider_id: ida}} {name: analyze_function, arguments: {procedure: main}} {name: search_strings, arguments: {pattern: license}} {name: close_binary, arguments: {}}❗ MCP 请求timeoutMs默认 300000ms大目标请调高 Agent 侧超时MCP 会话优先用close_binary关闭。想走交互式注册先设置REA_IDA_MCP_CONFIG再运行rea setup --client clientsetup 会把这个文件引用纳入待审查计划。能力边界核对REA 能从 IDA 取到什么、取不到什么两种 profile 共同支持✅ 函数/字符串清单、字面量与正则搜索✅ 过程解析、伪代码、汇编、原始函数指令✅ 已解析的被调用者、传入地址引用、函数档案dossier附加legacyprofile 额外支持直接调用者Headlessmodernprofile 无法从 xref 标签证明直接调用者档案中该字段标记为 unknown。明确不在覆盖范围❌ 完整函数体范围、带类型引用边、CFG、被引用数据、源本地变量、注释分类、数据库修订号❌binary_overview、整库符号清单、变更操作、调试、任意 Python 转发、GUI 导航❓ 档案中空的不支持字段表示unknown未知不代表确认不存在。⚡ 经验法则在组合依赖某个字段的工作流前先用binary_session确认工具实际可用性再跑rea doctor --provider ida --json验证注册——该命令不会启动 IDA。一键验证与排障verify:ida 命令和现象原因对照表在上游服务器已配置的前提下这条命令走一遍真实 CLI 与 MCP 工具链npm run verify:ida -- --target /absolute/path/to/program --procedure main它校验输出契约与 Evidence 完整性、原始输入保全与会话清理且不在控制台摘要中泄露本地目标数据。现象可能原因解决办法提示 provider 未识别REA_ANALYSIS_PROVIDER未设为ida或未设REA_IDA_MCP_CONFIG核对两个环境变量CLI 加--provider ida亦可报错REA_IDA_MCP_CONFIG must be absolute注册文件路径写了相对路径改为绝对路径后重跑SHA-256 身份校验失败GUI 打开的是.idb/.i64数据库文件而非原始二进制在 IDA 中重新打开原始输入文件分析请求超时MCPtimeoutMs默认 300000ms大目标不够调高 Agent 侧超时超时未完成会保留私有工作区清理后再重试Headless 打不开目标路径REA 与 supervisor 不在同一主机WSL 混合环境Headless 必须同主机文件系统WSL 场景改用 GUI 附加模式中断后会话残留进程被强杀worker 未释放检查上游会话清单与保留的工作区诊断信息再用close_binary规范关闭注册通过但缺少 supervisor 能力装的是不带 supervisor API 的旧版idalib-mcp安装支持idb_open/idb_list的版本注册写mode: headless下一步建议该读哪篇文档、该对照哪段源码两种模式最终共用同一套 CLI 命令与输出契约差别只在注册文件与生命周期策略。完整生命周期、身份校验与清理语义docs/ida-provider.md会话与连接管理源码对照src/ida/重点看IdaProvider.ts、IdaWorkspace.ts、IdaMcpConnection.ts适配层测试与真实 provider 证据的区别docs/testing.md确认你安装的 REA 版本是否包含 IDA 适配器npm 发布可能落后于 main 分支docs/installation.md【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考