REA:把"读闭源"交给 Agent 的逆向引擎 问一句就能扒出程序的逆向引擎

REA:把"读闭源"交给 Agent 的逆向引擎 问一句就能扒出程序的逆向引擎

工具描述

  • REA(Reverse Engineer Anything)是一个开源的逆向工程引擎,把"读一个程序到底怎么工作"这件事变成了一次对话。它本体是一个 MCP 服务 + CLI,你装在你的编码 Agent 里;你用大白话提一个问题("为什么恐龙越跑越快""% 按钮在加号之后为什么是这么算的"),它负责把目标程序的指令、引用、反编译结果、运行时观察扒回来给 Agent,Agent 据此把规则讲清楚、并写一个等价的小实现给你看。

用途

  • 它把逆向里最耗时的"开 Ghidra → 跟调用链 → 读汇编"这段,压缩成一次提问。典型用途:

  1. 逆向任意目标:原生二进制(PE/ELF/Mach-O)、JS/Electron 应用、网页与浏览器运行时、Android APK、固件、SQLite 库、WASM、抓包记录、.NET 程序集、Go/Rust 二进制等。给它一个目标 + 一个问题,它返回行为解释,你据此重建该功能。

  2. 安全侧初筛:恶意样本丢进去,先拿一版行为摘要 + 调用链,省掉从零读汇编的时间;摘要进情报前人工复核。

  3. 竞品/协议研究:理解闭源功能的实现逻辑,再写个能跑的小实现验证理解。

技术详解

逆向本质是"看程序本身"。REA 把这条链拆成三步,Agent 管"问",REA 管"看":

七度光 www.qdg.tw 1 2 3 问 — 给一个程序 + 一个问题 "恐龙为啥越跑越快" / "计算器 200+10% 为啥=220" 看 — REA 回读程序 指令 · 引用 · 反编译 · 运行时观察(MCP 服务) 解释 + 重建 Agent 讲清规则,写个等价小实现(教学级,别上生产) Agent 管问,REA 管看,最后出个能跑的小实现

架构:编码 Agent 通过 MCP 调 REA,底层真正干反编译的要么是你已装的 Ghidra/Hopper/IDA(原生二进制),要么是 REA 内置的静态解析器(ELF/PE/Mach-O/WASM/SQLite 这些不用外挂)。它没重造逆向引擎,只是加了个"智能层"。

七度光 www.qdg.tw 编码 Agent Claude Code / Codex REA MCP 服务 npx rea-agents Ghidra / Hopper / IDA 原生反编译 内置静态解析器 ELF/PE/WASM/SQLite 可查目标(按需装依赖) 原生二进制 JS / Electron 网页 / 浏览器 Android APK 固件 PE/ELF/Mach-O 模块·IPC·ASAR Chrome+Playwright JADX+apktool binwalk 原生目标走 Ghidra/IDA,内置格式免外挂 —— 查啥就装啥

两个影响使用的细节:

  • Playwright 这类重依赖是惰性加载的,第一次调浏览器目标会卡一下,正常,不是崩。

  • 查的目标类型不同,要额外装的依赖也不同,别一次装全。

部署方案

1. 前置:Node.js(JS/Electron 目标需 Node + npm;SQLite 目标需 Node 24.x≥24.15 或 26+)、一个支持 MCP 的编码 Agent(Claude Code / Codex 等)、按你要查的目标补对应后端(见下)。

2. 安装:

npx rea-agents@latest setup

它会让你批准一个安装计划,然后必须重启你的编码 Agent——MCP 服务是重启才注入的,这步漏了后面就看不到 REA。

3. 按目标类型补依赖(不用全装):

查什么

额外装

能拿到

原生二进制 PE/ELF/Mach-O

Ghidra / Hopper / IDA 三选一

伪代码、汇编、字符串、符号、调用/引用

JS / Electron

Node + npm;Linux 还要 ps(procps)

模块、import、sourcemap、路由、IPC、原生插件

网页 / 浏览器

Chrome 系浏览器(Playwright 自带,惰性加载)

页面结构、脚本、网络观察、截图

Android APK / 设备

无头 JADX + JDK;设备用 adb;资源用 apktool

Manifest、类、反编译方法;包/进程/日志/dump

固件

Linux + binwalk / unblob

区域、提取结果、原生分析交接

SQLite

Node 24.x≥24.15 或 26+(原生 SQLite)

表/列/索引/视图/触发器/行

WASM

自备 WABT 1.0.42

校验、节、import/export WAT

抓包(记录类)

HAR / Fiddler SAZ;Linux 用 mitmdump、tshark+capinfos

请求/响应/载荷;端点、DNS、TLS SNI、协议分布

4. JEB 用户:单独起一个 JEB 的 MCP 客户端,再导出 REA_JEB_MCP_URL 指过去,漏了就连不上。

5. 验证:拿计算器这类小目标把"问→看→重建"跑通一遍,再上复杂目标。

踩坑记录

  • Agent 里看不到 REA:九成是没重启。MCP 重启才注入,同时确认 server.json 注册进了你的 Agent。

  • 原生目标查不出:Ghidra/Hopper/IDA 至少装一个,一个没有就白搭。用 Kuna 深度分析的先 npm run verify:kuna 校验可执行文件。

  • SQLite 不识别:Node 版本不够,得 24.x≥24.15 或 26+。

  • 网页查失败:得有 Chrome 系浏览器;第一次惰性加载 Playwright 会卡一下,别当崩。浏览器观察还得给本地 debugging 端点。

  • JEB 连不上:漏了 REA_JEB_MCP_URL,它要求"调用方先起 JEB 的 MCP 客户端"。

  • 结果跟已知行为对不上:REA 输出是"发现 + 局限",部分是推断。关键分支对照目标方公开源码交叉验证,再下结论,别只信 AI。

下载地址

开源项目,直接 clone 或 npx 安装:

  • 仓库 / 安装:npx rea-agents@latest setup,代码仓库在 morluto/rea

  • 文档:rea.tools(get-started 为安装指引,faq 为常见问题)

GhostPDF.2024:无宏无JS把 shellcode 藏进 PDF 注释流 2026-10-16
CVE-2026-109618/109619 PHP2Shell:藏了 14 年的 PHP 核心 RCE,一次 multipart 上传就崩 2026-10-22