news 2026/10/29 13:30:24

如何用 REA(rea-agents)通过 MCP 让 AI Agent 完成二进制逆向分析:完整配置与证据验证指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 REA(rea-agents)通过 MCP 让 AI Agent 完成二进制逆向分析:完整配置与证据验证指南

如何用 REA(rea-agents)通过 MCP 让 AI Agent 完成二进制逆向分析:完整配置与证据验证指南

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

在别人的应用里看到一个想要的功能、却没有源码可看,是逆向工程里最常见的起点。REA(npm 包名rea-agents)是一个面向这个问题的 MCP 服务:它在本地对二进制、JavaScript/Electron 应用、.NET 程序集与网站做逆向分析,并把每条结论连同证据与限制一起返回给 AI Agent。终端里的 CLI 与 Agent 调用的 MCP 走同一套工作流和证据契约,因此你可以用自然语言下达调查指令,也可以用脚本化命令独立复核结果。

问题场景:调查闭源功能时的两个痛点

手动调查一个闭源功能,通常意味着在反汇编器、反编译器与调试器之间来回切换,逐条读指令,而且得到的结论很难向他人复现。REA 对此给出两个贯穿始终的承诺:其一,分析在本地运行,目标文件不会被上传(你的 Agent 模型提供商另有自己的数据政策);其二,每个结论都附带证据与限制说明,未确认的部分会作为未知项一并列出。

⚡ 三步跑起来:从注册 Agent 到终端验证

一条命令注册 Agent:npx rea-agents setup完整流程

在装有 Node.js 与 npm 的机器上执行:

npx rea-agents setup

交互流程是:选择要配置的 Agent → 审阅拟议的变更 → 批准。Setup 会为选中的客户端写入 REA 的 MCP 服务器注册与配套工作流指令(skill),并在动手前备份现有配置,完成后重启 Agent 即可。它对配置修改采取"先备份、后写入、再校验"的保守事务:配置路径不安全(如符号链接未解析到当前用户拥有的普通文件)、备份失败、写入失败、写后校验失败这四种情形各自给出可操作的诊断;任何一步失败都会向用户暴露完整原因,而不是留下半成品的注册,必要时可恢复.rea.backup后重跑 setup(见 src/application/SetupClients.ts)。

运行时要求为 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+ 以及 npm;23、25 与预发布版本不受支持,且 REA 从不升级 Node.js、npm 或 Homebrew。支持的客户端与--client值(节选,完整清单见 安装指南 的 supported-agents 一节):

客户端--client值客户端--client值
Claude Codeclaude_codeGemini CLIgemini_cli
Claude Desktopclaude_desktopWindsurfwindsurf
CodexcodexDevindevin
CursorcursorOpenCodeopencode
AntigravityantigravityGitHub Copilot CLIcopilot_cli
Command CodecommandcodeQwen Codeqwen_code
VS CodevscodeGrok Buildgrok_build

清单中还包括omp、pi、hermes、qoder、trae、zcode与dsh(DeepSeek Harness,在 6.4.0 之后的某个发布进入 npm 前仅 main 可用)。任何支持本地 MCP 服务器的 Agent 都能接入:表内客户端一键配置,表外客户端按安装指南的 mcp-registry 一节手动注册。

版本钉住值得注意:持久 MCP 注册钉在真正执行 setup 的版本上,之后运行新版 setup 才会在审阅过的 setup 事务中迁移旧注册;npm 询问"是否下载并运行"的批准只覆盖包本身,不覆盖 REA 后续对 Agent 配置或 Hopper 的安装。

一句话发起调查:典型自然语言指令

Understand how search works in the Notes app, show me the evidence, and build a similar feature for my project.

把 Notes 换成你的目标应用与功能即可。回路是:Agent 经 MCP 调用 REA 检查目标并追踪相关代码,REA 返回带证据的发现,Agent 据此追问、解释行为,或编写并测试一个实现。

终端里验证结果:脚本化分析与--json输出

检查一个已解包的 JavaScript/Electron 应用目录或 ASAR:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

返回模块、导入关系、Electron 边界及其完整 Evidence 记录,静态分析不需要任何逆向引擎;Windows 上把路径替换为"D:/apps/example"之类。安装rea命令供日常使用:

npm install --global rea-agents rea --help

原生二进制分析需要先配置分析引擎(provider):

rea analyze /absolute/path/to/program --provider ghidra --json rea search /absolute/path/to/program "search" --provider ghidra --json rea decompile /absolute/path/to/program 0x1000 --provider ghidra --json

analyze/inspect共用原生概览工作流,function返回函数档案(dossier),只看汇编指令用rea instructions;macOS 的.app包可直接作为目标。保持更新用rea update(npx 用户重跑npx rea-agents@latest setup以刷新注册与 skill),一次性命令统一用npx rea-agents@latest <command>。

目标清单:REA 能分析什么

各目标类型、返回内容与前置要求(基于当前 README 矩阵重构,指南均为仓库内文档):

分析对象REA 返回前置要求与指南
原生二进制伪代码、汇编、字符串、符号、调用与引用Hopper、Ghidra 或 IDA;原生分析
JavaScript / Electron模块、导入、source map、路由、IPC 与原生插件关系Node.js 与 npm;无需逆向引擎
.NET 程序集元数据、CIL 指令、声明的原生依赖与构建比较无,纯静态检查;托管代码
网站页面结构、脚本、网络观察与截图Chrome 系浏览器;浏览器观察
离线 ELF 布局 / 记录的 Linux 崩溃段节、原始符号与重定位、缓解候选;各线程寄存器与信号Linux x64 调用方自备 pwntools,可选 GDB/pwndbg;二进制诊断、记录崩溃
EVM 字节码分发选择器、字节偏移、推断参数与可变性Linux x64 本地 raw/hex 载体;EVM 指南
Android APK / 设备 / 资源Manifest 声明、类、反编译方法与引用;设备日志、屏幕与文件传输;解码资源表无头 JADX + 完整 JDK;调用方 adb;Apktool;Android、ADB、资源
Go 二进制 / WASM / Flutter编译器版本、模块与构建设置;WAT 校验与精确导入导出形式;Dart 快照与引擎指纹内置静态检查 / 调用方 WABT 1.0.42 / 静态 APK 解析
固件区域、解包结果与原生分析交接Linux 上 Binwalk / Unblob;固件指南
包与资源文件清单、摘要、plist、Apple bundle 解剖与解出资源JavaScript 工件、Apple 应用
进程行为终端输出、交互、退出、文件系统观察与运行比较Linux/macOS 且需原生 PTY;进程捕获
已保存网络抓包请求、响应、暴露载荷与来源位置HAR 格式;Linux 下原生 mitmproxy 抓包需 mitmdump;抓包指南

Provider 选择规则:rea providers --json与rea capabilities --json列出可用引擎及能力;自动选择仅在唯一可用 provider 支持目标时生效,多个候选必须显式--provider。环境变量REA_ANALYSIS_PROVIDER是常设偏好,显式--provider覆盖它;MCP 侧则给open_binary传provider_id。选中的 provider 绑定会话,直到显式切换或关闭;ambiguous错误可从details.candidate_ids里挑选,provider_unavailable时运行rea doctor --provider ID --json诊断该引擎。

安全边界:静态 JavaScript 与 .NET 检查只读取给定文件、不运行应用;而运行时捕获会以你的用户权限运行或交互选中目标,每条运行时指南都写明其副作用。

结论为何可信:证据链的三段设计

入口同源。scripts/rea.mjs 是唯一入口,参数为mcp时路由到 MCP 工具服务,其余走 CLI;两侧复用 src/application 下的应用服务(setup、快照、诊断),终端与 Agent 拿到的是同一工作流下的结果。

证据契约。src/domain/evidence.ts 定义 Evidence 记录保留工件标识、来源位置、观察、推断与未决发现;错误响应同样受 error-contract.schema.json 约束。CLI 提供evidence-import校验、evidence-export导出规范形式与两 bundle 比较。

快照复用。快照仅在目标字节、操作、参数、provider 与设置完全匹配时复用同一结果,文件本地保存且仅限属主权限;CLI 缓存命中发生在启动 provider 进程之前,MCP 侧open_binary接受snapshot_path原子导入,close_binary带overwrite: true可先保存再释放资源(详见 CLI 指南)。

三个实战案例:从伪代码到可复现实现

  • DX-Ball(声像重建):跟随一次声音调用进入"位置→声像"辅助函数,把不完整的伪代码补成 C,重建通过 3,205 个 original-x86 用例并复现全部 63 个编译后的函数字节。
  • Notion(Electron 剪贴板桥):定位渲染进程的剪贴板 API,经 preload 与 IPC 追进主进程,检查富剪贴板格式。
  • TH04(DOS 弹幕计算):检查 PC-98 原作的 16 位指令,恢复固定与瞄准角计算,并把重建的 C++ 与历史编译器输出对比。

这些结论不是孤证:仓库内提供真实引擎全链路验证脚本(如 scripts/verify-real-hopper.mjs)与 tests/boundary 下的 483 个边界测试文件,案例过程可由脚本复验。

❓ 常见疑问

哪些 Agent 能用 REA?任何支持本地 MCP 服务器的 Agent。支持清单内的客户端一键配置,其余走手动 MCP 注册。

必须有 Hopper、Ghidra 或 IDA 吗?只有深度原生分析需要三者之一;静态 JavaScript 与 .NET 检查不需要逆向引擎。Setup 可在批准后代装 Hopper,Ghidra 与 IDA 使用你已有的安装。

需要预先启动 Hopper 吗?不需要,REA 在操作需要时自行启动。macOS 首跑可能弹出选择演示模式或激活授权的对话框,需在相同用户会话内完成。

只从 skills.sh 安装 skill 会怎样?它只提供调查指令。完整路径是npx rea-agents setup注册 MCP 服务器并安装配套指令,然后重启 Agent。

REA 会上传我的应用吗?不会。分析在本地进行,模型提供商有各自的数据政策。

遇到 bug 怎么办?先更新(rea update或npx rea-agents@latest setup),重启 Agent 重试;仍复现则附 REA 版本、目标类型、复现步骤与错误输出提 issue。

下一步:文档入口与版本边界

深入阅读路径:安装与设置(Agent 注册、provider 配置、更新与卸载)、CLI 与 Evidence(命令、provider 选择、快照、导入导出与退出状态)、MCP 契约 与 Agent 提示(工具结果、会话与引导式调查)、路线图;漏洞按 SECURITY.md 报告。

版本边界:仓库 main 分支描述当前代码与其生成的工具目录,@latest选的是 npm 发布版,可用npm view rea-agents dist-tags.latest核对;功能判断以已连接服务器的实际工具列表与声明的输入 schema 为准。当前仓库版本为 6.4.0(截至 5.0.0 发布时,工具目录为 133 个 MCP 工具)。

源码分层可对照理解:src/hopper/、src/ghidra/、src/ida/是三个原生引擎适配层,src/browser/是 CDP/Playwright 浏览器观察层,src/application/为 CLI 与 MCP 共享的应用服务,src/contracts/集中定义工具输入输出契约。

REA 面向合法的逆向工程研究、教育与软件分析使用;获取必要授权并遵守适用法律法规由使用者负责,项目不认可任何非法或未授权的用途。

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 20:48:33

SpringBoot民族服饰租赁系统开发与优化实践

1. 项目背景与核心价值民族服饰租赁系统是一个结合传统文化与现代商业模式的创新项目。随着文旅产业的蓬勃发展和年轻人对民族文化认同感的提升&#xff0c;民族服饰体验已成为景区、影楼、文化活动中的热门需求。传统租赁方式存在库存管理混乱、预约效率低下、服饰维护困难等问…

作者头像 李华
网站建设 2026/10/24 23:54:10

React + Pixi.js 多平台小游戏开发实战:架构设计与性能优化

1. 项目定位&#xff1a;为什么选Reactpixi.js这套组合前端小游戏这几年其实一直处于一个蛮微妙的位置。说它是H5吧&#xff0c;普通DOM动画在复杂场景里根本扛不住&#xff1b;说它重度吧&#xff0c;又犯不着直接上Unity或Cocos那套重型引擎。我去年接到一个模拟项目X的时候&…

作者头像 李华
网站建设 2026/10/26 0:44:09

SpringBoot+Vue饰品商城系统开发实战

## 1. 项目背景与核心价值去年帮学弟评审毕业设计时&#xff0c;发现电商类选题占比超过40%&#xff0c;但真正能体现技术深度的不足两成。这个基于SpringBootVue的饰品商城系统之所以值得推荐&#xff0c;关键在于它完美平衡了技术栈完整性与业务场景实用性。饰品品类特有的SK…

作者头像 李华
网站建设 2026/10/25 10:43:58

Flutter在OpenHarmony上的家庭健康应用开发实践

1. 项目概述最近在OpenHarmony平台上用Flutter开发了一款家庭健康管理应用&#xff0c;主要包含两大核心功能模块&#xff1a;家庭药箱管理和体重记录。这个项目让我深刻体会到Flutter在跨平台开发中的优势&#xff0c;特别是在新兴的OpenHarmony生态中的适配表现。作为开发者&…

作者头像 李华
网站建设 2026/10/25 22:30:09

电商用户行为分析系统:Python实现与优化实践

1. 电商用户行为分析系统的核心价值电商平台每天产生海量用户行为数据&#xff0c;但原始数据就像未经雕琢的玉石——价值连城却难以直接利用。去年双十一期间&#xff0c;我帮某服饰品牌分析其官网流量数据时发现&#xff1a;虽然日均UV超过10万&#xff0c;但运营团队能有效利…

作者头像 李华
网站建设 2026/10/25 22:19:40

C语言二维数组:从基础到高级应用全解析

1. 二维数组的本质与概念解析作为一名从学生时代就开始接触C语言的程序员&#xff0c;我至今记得第一次理解二维数组时那种豁然开朗的感觉。二维数组本质上就是一维数组的数组&#xff0c;这个定义看似简单&#xff0c;却蕴含着C语言数据组织的精妙之处。1.1 从一维到多维的思维…

作者头像 李华