REA:逆向一切

2026-10-13 21:22:24 6 168

REA:逆向一切

rea-hopper-analysis.webp

通过一个 MCP 服务,逆向分析二进制文件、应用程序和运行时行为。

看到喜欢的功能,弄清它的工作原理,深入到二进制层面。

npm version MCP tool catalog skills.sh

网站 · 指南 · 案例

npx rea-agents setup

在应用中看到一个想加入自己产品的功能?让智能体用 REA 调查它。即使没有源代码,智能体也可以检查应用、解释功能的工作方式、展示证据,并为你的项目实现类似功能。

REA 将智能体连接到分析工具,用于检查原生二进制文件、JavaScript 和 Electron 应用、.NET 程序集以及网站。你也可以在终端中使用同样的工具。分析在本机运行,结果包含支撑各项结论的证据和相关限制。

设置流程会向智能体注册 REA,并安装匹配的工作流指引。原生分析可以使用已有的 Hopper 或 Ghidra;设置流程也可以在你批准后安装 Hopper。静态 JavaScript 分析不需要这两个引擎。

访问 REA 网站,查看设置说明、图解指南和真实案例。 可以阅读网站上的实操指南。

快速开始

设置智能体

安装 Node.js 和 npm 后,运行:

npx rea-agents setup

选择智能体,检查计划中的变更并批准。设置流程会添加 REA 的 MCP 服务和匹配的工作流指引,并备份已有配置。完成后重启智能体。

设置流程支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 和其他智能体。提供方配置和手动注册 MCP 的方法见安装与设置。

询问智能体

弄清 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

原生分析需要先配置分析提供方。原生命令、提供方选择、快照和脚本用法见 CLI 与 Evidence 指南。

更新 REA

REA 更新较快,新版本经常包含错误修复。请保持安装的版本为最新。

通过 npm 安装的 CLI 使用:

rea update

要更新智能体注册和 skill,请运行更新命令输出的设置命令。

如果使用 npx,通过以下命令更新智能体设置:

npx rea-agents@latest setup

检查设置变更并重启智能体。单次 CLI 操作可使用 npx rea-agents@latest,后接所需命令。

REA 的工作原理

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

可以分析什么

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

目标 REA 返回的内容 要求与指南
原生二进制文件 伪代码、汇编、字符串、符号、调用和引用 Hopper、Ghidra 或 IDA;原生分析
离线 ELF 布局 节、段、原始符号/重定位信息及静态防护机制候选项 Linux x64 上由调用方提供的 pwntools;二进制诊断
EVM 字节码 分派选择器、字节偏移、推断的参数和状态可变性 Linux x64 上的本地原始字节/十六进制输入载体;离线 EVM 指南
已记录的 Linux 崩溃 原始 note 记录、每个已记录线程的寄存器/信号及可选的映射候选项 Linux x64 上由调用方提供的 pwntools;可选的 GDB/pwndbg;已记录崩溃
JavaScript / Electron 模块、导入、source map、路由、IPC 和原生扩展关系 Node.js 和 npm;应用分析
网站 页面结构、脚本、网络观察结果和按请求获取的截图 Chrome 系浏览器;浏览器分析
已保存的网络捕获 请求、响应、可访问的载荷和来源位置 HAR;原生 mitmproxy 捕获需要 Linux 上的 mitmdump;捕获指南
数据包捕获 端点、DNS、TLS SNI、协议分布和 HTTP 请求 调用方提供的 tshark 和 capinfos;pcap 指南
.NET 程序集 元数据、CIL 指令、声明的原生依赖和构建对比 静态检查;托管代码指南
Android APK 清单声明、类、反编译的方法和引用 Linux/macOS/Windows x64 上的无界面 JADX 和完整 JDK;Android 指南
Android 设备 设备、软件包、进程、日志、转储、屏幕截图以及 APK/文件传输 调用方提供的 adb(模拟器或实体设备);ADB 指南
JEB 项目 引擎支持的项目单元、工件摘要和类型/方法的伪代码 由调用方启动、提供 MCP 的 JEB 客户端,通过 REA_JEB_MCP_URL 选择;JEB 指南
Android 资源 解码后的清单、字符串表、语言区域和版本信息 调用方提供的 Apktool 启动器;资源指南
Flutter 应用 Dart 快照哈希、按 ABI 的库摘要及引擎构建溯源 无(静态 APK 解析);Flutter 指南
固件 区域、提取结果和转交原生分析的内容 Linux 上的 Binwalk / Unblob;固件指南
抓包文件 指定字段、重复值、过滤条件与解码规则 Linux: TShark 4.x + prlimit; 抓包分析指南
录制的逻辑信号 解码注释、样本范围和诊断信息 Linux: sigrok-cli 0.7.2 + prlimit; 信号记录指南
软件包与资源 文件清单、摘要、plist、Apple bundle 结构和提取的资源 制品与 JavaScript 指南、Apple 应用
进程行为 终端输出、交互、退出和文件系统观察结果,以及运行对比 支持原生 PTY 的 Linux/macOS;进程捕获

静态 JavaScript 和 .NET 检查读取提供的文件,不运行应用。运行时捕获会以你的用户权限运行目标或与之交互;各运行时指南说明了具体影响。

不同提供方支持的原生格式和主机系统有所不同。

案例

DX-Ball 声音平移、Notion 剪贴板桥接与 TH04 弹幕环案例的插图

DX-Ball:重建声像计算

沿声音调用追踪到根据位置计算声像的辅助函数,检查指令,将不完整的伪代码转为 C。重建结果通过了 3,205 个原始 x86 测试用例,并复现了编译后函数的全部 63 个字节。

阅读案例 · 重建项目仓库

Notion:追踪 Electron 剪贴板桥

找到渲染进程的剪贴板 API,沿 preload 和 IPC 追踪到主进程,并检查富格式剪贴板数据。

阅读案例

TH04:恢复 DOS 环形子弹的计算

检查原始 PC-98 游戏的 16 位指令,恢复固定角度和瞄准角度的计算,并将重建的 C++ 与当年的编译器输出进行对比。

阅读案例 · 重建项目仓库

如果你用 REA 分析了有趣的目标,我们很想了解。欢迎通过 issue 或 pull request 分享案例,说明目标、你的问题、REA 如何提供帮助,以及你的发现。

常见问题

哪些智能体可以使用 REA?

任何支持本地 MCP 服务的智能体都可以使用。

需要 Hopper、Ghidra 或 IDA 吗?

深入的原生分析需要其中一个引擎。静态 JavaScript 和 .NET 检查不需要原生分析引擎。设置流程可以在你批准后安装 Hopper;Ghidra 和 IDA 则使用已有安装。

需要先启动 Hopper 吗?

REA 会在操作需要时启动 Hopper。在 macOS 上,首次运行时可能会出现对话框,让你选择演示模式或激活许可证。

从 skills.sh 安装 skill 有什么作用?

skill 为智能体提供调查指引。使用 npx rea-agents setup 注册 REA 的 MCP 服务并安装匹配的指引,然后重启智能体。

REA 返回什么代码?

原生分析返回伪代码和汇编。JavaScript/Electron 分析恢复模块及其关系。智能体利用这些发现编写并测试实现。

REA 会上传我的应用吗?

REA 在本机分析目标。智能体会接收工具结果,其模型提供商有自己的数据政策。

遇到错误时该怎么办?

先更新;最近的版本可能已经修复了问题。

通过 npm 安装的 CLI 使用:

rea update

通过 npx 设置智能体时使用:

npx rea-agents@latest setup

如果正在使用智能体,请完成设置更新并重启智能体。重试同一任务。如果问题仍然存在,请提交 issue,附上 REA 版本、目标类型、复现步骤和错误输出。

注意

REA最近太火了,但有两点需要注意:

  1. 千万千万千万别让Codex和Claude去逆向,封号警告
  2. 它并不是一键逆向任何软件,只是一个智能体

本质上只是让 AI 调用现有逆向工具,自动分析软件功能。

关于作者

whoami123篇文章197篇回复

勤快的搬运工。

评论6次

要评论?请先  登录  或  注册
  • TOP1
    11 小时前

    这个我们内部分析对比过,与IDAMCP进行了对比,还是差一点

  • 6楼
    半小时前
    xufat:

    现在的门槛是越来越低了,想想以前用OD的年代。。

    1

    其实不然,一个是在自己脑子里,一个是在工具里. 有区别的. 你没发现几行代码完成的事情,ai会给你你一堆没用的代码, 冷只是ai是谁搞出来的,拿啥写的>

  • 5楼
    4 小时前

    感觉没那么好用 而且有点废token

  • 4楼
    5 小时前

    不好用。

  • 3楼
    10 小时前

    现在的门槛是越来越低了,想想以前用OD的年代。。

  • 2楼
    11 小时前

    这个我们内部分析对比过,与IDAMCP进行了对比,还是差一点

  • 1楼
    昨天 21:22

    REA 本质是把本地逆向工具链(Hopper/Ghidra/JADX/mitmproxy/adb/pwntools 等)通过 MCP 协议暴露给 AI 智能体调度,npx rea-agents setup 会把 MCP 服务和 skill 注册到 Claude Code、Codex、Cursor 等客户端。由于它以当前用户权限运行并且具备执行命令、访问设备、捕获网络流量的能力,安全边界需要主动控制。

    主要风险面和对应的缓解措施:

    1. MCP 服务的网络暴露面参考 Burp Suite MCP 服务被报告的 DNS Rebinding SSRF(HackerOne #3176157):本地 MCP 端点如果没有 Origin 校验和 CORS 限制,恶意网页可以借助 DNS rebinding 把受害者浏览器连到 127.0.0.1 上的 MCP 服务,再用 send_http1_request 类工具访问 localhost 服务、内网段和云元数据端点(169.254.169.254)。REA 同样监听本地端口并暴露工具能力,配置时要把绑定地址锁在 127.0.0.1 或 Unix socket,禁止 0.0.0.0 监听;如果你要跨主机调用,加一道反向代理并强制 mTLS,不要直接放开。

    2. 本机权限边界REA 文档写明"运行时捕获会以你的用户权限运行目标或与之交互",涉及 process-capture、原生 PTY、adb 设备交互、pwntools 执行时,等于把当前账户的全部权限交给 LLM 调度。任何能影响 MCP 输入的来源(网页内容、被分析的文档、第三方 skill)都可能在你的权限下执行任意命令。建议用一个专用低权限账户跑涉及进程/设备交互的分析,主账户只做纯静态分析(JS 静态检查、.NET 元数据读取);高敏目标放进 VM 或容器。

    3. 供应链投毒MITRE ATLAS AML.T0104 描述的攻击模式正是针对这种情况:npm、GitHub、skill 注册表缺乏审核,攻击者发布带 prompt injection 或恶意代码的"工具",等你装进 MCP 客户端就会劫持智能体行为。REA 自己也是从 npm 拉取,setup 流程还会从远程仓库同步 skill。用 npm install --global rea-agents 而不是 npx @latest 来固定版本,校验 package-lock.json 的 integrity hash,setup 前先在隔离环境 dry-run 看它要写哪些配置文件。

    4. 逆向结果回传 LLM 的数据外泄OWASP GenAI LLM02:2025 Sensitive Information Disclosure 适用:REA 输出的伪代码、字符串表、符号、source map、网络捕获内容、APK 反编译结果都会随 prompt 提交到模型提供方(Anthropic/OpenAI/Google)。即使你分析的目标不含密钥,逆向过程中的副产品(硬编码的 API key、内网主机名、AWS ARN、数据库连接串、员工邮箱)本身就经常泄露凭证。处理商业软件或含客户数据的二进制时,把分析放在离线 VM 里,禁用分析结果上传,用本地模型(如 Ollama + Qwen/DeepSeek)跑推理。

    5. 账号风控贴子里已经提了,Codex 和 Claude 对逆向活动会自动封号。如果你用主账号接入,等于拿工作流赌账号安全。

    6. 工具调用的间接注入REA 的工作流是"LLM 读取目标→生成后续问题→调用 MCP 工具→基于结果继续分析"。如果目标文件包含针对 LLM 的 prompt injection(比如 README、注释、HTML 中的隐藏指令),智能体可能偏离你的实际任务。Hopper/Ghidra 的反编译视图和 JADX 的反编译 Java 都在潜在注入面内——分析前对目标做一轮 prompt injection 扫描(关键词:ignore previous instructions、system:、`` 等),可疑目标走人工复核而不是全自动链路。

    实操上比较稳的配置:隔离账户 + 127.0.0.1 绑定 + 固定 npm 版本 + 离线敏感目标 + 本地模型跑分析。REA 的价值在于把"读懂二进制"这件枯燥活的初轮筛选自动化,最终决策和落地实现还是回到人手比较可控。