逆向工程REA:让智能体从应用行为追到机器码

前言

逆向分析的常规路径是:拿到目标程序,手动开 Hopper 或 Ghidra 看反汇编,再回到 JavaScript 或托管代码里找调用点,最后自己拼出一份结论。问题在于这条链路是断的——不同格式的目标要换不同工具,中间的引用关系靠人记,产出的结论也往往没有留下证据。

逆向工程REA(Reverse Engineer Anything,下称 REA)想做的是把这条链路交给智能体:你用自然语言描述想了解的功能,REA 在本地对目标做检查并追踪相关代码,返回发现和对应证据。下面介绍这个 Skill 是什么、能做什么、怎么装、怎么用。

这是什么

REA 定位为「一个 MCP 服务,用于逆向分析二进制文件、应用程序和运行时行为」。它把智能体连接到一组分析工具,用于检查原生二进制、JavaScript 和 Electron 应用、.NET 程序集以及网站;同一套工具也可以直接从终端调用。分析在本机运行,结果包含支撑各项结论的证据以及相关限制。

按 SkillHub 页面信息:Skill 名称为「逆向工程REA」,坐标 @user_7c16de0c/reverse-engineer-anything,版本 42.0.0,分类 it-ops-security,发布者 user_7c16de0c,来源 community,标签 requires_api_key=false(即无需 API Key)。评分 100000,下载 2706 次(数据取自官方页面抓取结果)。上游仓库为 https://github.com/morluto/rea,采用 MIT 协议,npm 包名 rea-agents,另有站点 rea.tools。

核心功能

REA 的工作方式是:智能体通过 MCP 调用 REA,检查目标并追踪相关代码,REA 返回发现及对应证据;智能体据此提出后续问题、解释行为,或编写并测试实现。CLI 命令使用同样的工作流。

可以分析的目标(摘自官方文档「可以分析什么」一节):

  • 原生二进制文件:返回伪代码、汇编、字符串、符号、调用和引用,依赖 Hopper、Ghidra、IDA 或 Kuna。
  • 离线 ELF 布局:返回节、段、原始符号/重定位信息及静态防护机制候选项,Linux x64 上由调用方提供 pwntools。
  • Go 二进制文件:返回内嵌编译器版本、模块、替换项和构建设置,内置静态 ELF/PE/thin Mach-O 检查,无需安装 Go。
  • WASM 工件:返回验证、节、精确的导入/导出 WAT 形式及解码后的 WAT,调用方提供 WABT 1.0.42。
  • EVM 字节码:返回分派选择器、字节偏移、推断的参数和状态可变性。
  • Rust 二进制:返回内嵌的 cargo-auditable 依赖列表。
  • Erlang BEAM:返回 IFF chunks、atoms、exports 和 tables。
  • PE 证书:返回 Authenticode WIN_CERTIFICATE 条目与 PKCS#7 签名者/X.509 身份字段。
  • PE 导入表、ELF notes、Apple IPS 崩溃、Linux 内核模块等:均为内置静态检查。
  • JavaScript 与 Electron:静态分析已解包的应用目录或 ASAR,返回模块、导入、Electron 边界及相关证据,不需要原生分析引擎。

运行时层面,REA 还覆盖浏览器与网络流量分析(该能力出现在 Skill 简介中)。原生分析可以复用已有的 Hopper、Ghidra、IDA 或 Kuna 安装;静态 JavaScript 分析不需要原生分析引擎。

安装与启用

REA 需要 Node.js 22.x(>=22.23.4)、24.x(>=24.22.1)或 26+(>=26.12.1),以及 npm。额外工具和主机支持取决于分析目标。

安装并注册到智能体,官方给出的命令是:

npx rea-agents setup

运行后选择要配置的智能体,检查计划中的变更并批准。设置流程会添加 REA 的 MCP 服务和匹配的工作流指引,并备份已有配置;完成后重启智能体。setup 支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 和其他智能体,各提供方的配置方式见官方安装指南。

需要注意两点:

  • MCP 默认使用紧凑输入 Schema 以减少上下文开销。需要完整字段说明和嵌套验证细节时,在 MCP 注册中设置 REA_MCP_INPUT_SCHEMA_PROFILE=full。两种配置都保留完整工具集和规范的服务端验证。
  • 如果客户端对完整的 tools/list 帧有大小限制,可设置 REA_MCP_OUTPUT_SCHEMA_PROFILE=compact 来约束每个输出 Schema,或设为 off 完全省略输出 Schema。

Linux 上有一点前提:Ghidra、JADX、固件工具启动和静态 JavaScript/Electron 分析,需要在 REA 的 PATH 中提供兼容 procps 的 ps,用于检查进程所有权;恢复步骤见安装指南的 Linux 进程所有权前提一节。

典型用法

setup 完成后,可以直接向智能体提问,例如官方示例:

弄清 Notes 应用的搜索功能如何工作,展示证据,并为我的项目实现类似功能。

把 Notes 替换为目标应用,并描述你想了解的功能即可。

也可以在终端直接调用,检查已解包的 JavaScript/Electron 应用目录或 ASAR 文件:

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

结果包含模块、导入、Electron 边界及相关证据。Windows 上路径形如 "D:/apps/example"。

如果需要经常使用,可以全局安装 rea 命令:

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

做原生分析前需要先配置分析提供方(Hopper、Ghidra、IDA 或 Kuna),原生命令、提供方选择、快照和脚本用法见官方 CLI 与 Evidence 指南。

更新 REA 的方式:

rea update

通过 npm install --global 或 bun add --global 安装的 CLI 用这条命令更新。Bun 全局更新需要 Bun 1.2.17 或更高版本。使用 npx 时,改用 npx rea-agents@latest setup 刷新智能体注册和 skill。

适用场景与注意

适合的场景:

  • 手上只有编译产物、没有源码,需要弄清某个功能是怎么实现的,并拿到可追溯的证据。
  • 目标形态多样——原生二进制、Electron/JavaScript、.NET 程序集、网站,希望用同一套调用方式覆盖。
  • 想在本地完成分析,不把目标文件上传到第三方服务。

限制和坑:

  • 原生分析依赖本机已有或经批准安装的 Hopper、Ghidra、IDA 或 Kuna;没有这些引擎时,静态 JavaScript 分析仍可用,但原生二进制分析无法进行。
  • 各目标需要不同的外部工具,例如 WASM 需要 WABT 1.0.42,离线 ELF 布局需要 pwntools,要求按目标类型提前准备。
  • Linux 下必须保证 PATH 里有兼容 procps 的 ps。
  • 该 Skill 标注 requires_api_key=false,说明本体不强制 API Key;但接入的智能体本身仍需可用。
  • 结论带有证据和限制说明,但仍是分析结果而非确定事实,关键判断需要人工复核。

结尾

REA 的价值在于把「换工具 + 人工追踪引用」的逆向流程收敛成一次智能体调用:用自然语言提出问题,由它调度本地分析工具、返回带证据的发现,也可以直接走 CLI。适合需要反复分析不同形态目标、又希望结论可追溯的开发者。

官方地址:

  • SkillHub:https://www.skillhub.cn/skills/user_7c16de0c/reverse-engineer-anything
  • 仓库:https://github.com/morluto/rea
  • 站点:https://rea.tools/
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye