morluto/rea

GitHub Trending (daily) 工具

摘要

REA 是一个开源 MCP 服务器,可将 AI 智能体连接到逆向工程工具,用于检查原生二进制文件、JavaScript/Electron 应用、.NET 程序集和网站,遵循“反编译—理解—重建”的工作流程,并确保结论有据可查。

用智能体逆向工程任何东西,从应用行为到底层的原生二进制文件。
查看原文
查看缓存全文

缓存时间: 2026/10/06 15:57

morluto/rea Source: https://github.com/morluto/rea English · 简体中文 · 日本語 · 한국어 · العربية

REA:逆向工程一切

一个 MCP,用于对二进制文件、应用程序及运行时行为进行逆向工程。

看到一个你喜欢的功能。弄清它是如何运作的,直到二进制层面。

npm version (https://www.npmjs.com/package/rea-agents) CI (https://github.com/morluto/rea/actions/workflows/ci.yml) MCP 工具目录 Node.js 22+ (https://nodejs.org/) MIT 许可证 Discord (https://discord.gg/GkcryMnJDM) 快速开始 · 当前状态 · 调查模型 · 工具目录 · 路线图 · 工作原理

npx rea-agents setup

加入逆向工程社区 Discord · 答疑解惑 · 展示与分享


在应用中看到一个你希望拥有在自己产品中的功能?让你的智能体用 REA 去调查它。它可以在没有源代码的情况下检查该应用,解释该功能是如何运作的,展示证据,并为你的项目构建一个类似版本。

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

设置会将 REA 注册到你的智能体中,并安装与之匹配的工作流说明。原生分析可以使用已有的 Hopper 或 Ghidra 安装;设置流程在获得批准后可选择安装 Hopper。静态 JavaScript 分析不需要任何引擎。

只需询问你的智能体

完成设置后,重启你的智能体并询问:

理解 Notes 应用中的搜索功能是如何工作的,展示证据,并为我的项目构建一个类似功能。

将 Notes 替换为你想了解的应用,或者先请求一份概览。

调查模型

反编译 打开一个应用,恢复可读的代码、字符串、名称,以及其他关于其工作方式的线索。

理解 跟随代码从应用的一部分到另一部分,直到智能体能够解释某个功能实际是如何工作的。

复刻 将智能体所学到的内容转化为你自己产品中的一个功能,并适配你的技术栈、界面和需求。

REA 会展示它是如何得出结论的。它不会声称恢复原始源代码或自动克隆某个应用。

为什么选择 REA

为智能体而建询问应用是做什么的,让智能体去检查,而不是靠猜测。
CLI 与 MCP从终端或智能体中运行相同的逆向工程能力。
引导式设置配置你的智能体,连接已有的分析工具,或在你的批准下安装 Hopper。
从洞察到代码理解一个功能,然后在同一个编码会话中构建你自己的版本。
本地优先分析在你支持的本地主机上运行。REA 不会将应用上传到托管分析服务。
保留上下文调查多个应用,而无需为每个问题重新开始。

快速开始

运行设置(推荐)

为你的智能体设置 REA:

npx rea-agents setup

选择哪些受支持的智能体应使用 REA,然后在批准前审查确切的路径和更改。已有的 REA 注册默认处于选中状态;新检测到的智能体可选择,但仅检测到并不意味着会被选中。设置会为所选智能体添加 MCP 访问权限和 REA 的引导式工作流。Hopper 是一个单独的可选选择,需要单独的授权。设置也可以记录一个已有的 Ghidra 安装。设置会在应用更改前展示其内容,并备份现有配置。

参见安装与设置了解要求和设置选项。

使用智能体(推荐)

完成设置后,重启你的智能体,并描述你想了解的应用或功能。Hopper 可以在演示模式下运行;如果出现首次运行提示,可选择演示模式或输入已有的许可证。REA 支持 Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、Windsurf、Devin、OpenCode、Antigravity、GitHub Copilot CLI、Command Code 和 VS Code。已有 REA 注册的智能体在设置期间默认选中;其他检测到的智能体在被选择之前保持未选中状态。其他智能体可以使用手动 MCP 配置。

单独安装技能

npx skills add morluto/rea --skill reverse-engineer-anything

这会安装智能体指令,而不是 MCP 注册或分析引擎。请遵循该技能的按需连接指南:如果缺少注册,则准备一份有范围限制的 npx rea-agents setup 计划,审查并批准其实际更改,然后重启/重新连接并验证工具。上述引导式设置默认会安装与版本匹配的技能。skills.sh 路径使用仓库指令,这些指令可能领先于已发布的服务;参见已发布包与 main。

从终端获得第一个结果

对你提取出的 JavaScript/Electron 应用目录树或 ASAR,运行:

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

将路径替换为目标路径(例如 Windows 上的 "D:/apps/example")。这会返回内联的证据、恢复的图谱、局限性和未知项,无需 MCP 设置、Hopper、Ghidra,也无需执行该应用。对于原生应用,先配置其引擎,然后使用 analyze 并指定该应用的路径。需要诊断时运行 doctor;它不是每次分析的前置条件。

安装 rea 命令

安装命令行界面:

curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash

安装程序会将 rea 添加到你的系统,并在终端中运行时启动设置流程。它要求已经安装 Node.js 和 npm。或者,也可以用 npm 安装,然后运行设置:

npm install --global rea-agents
rea setup

用 rea update 更新任意一种安装。

要求

静态 JavaScript 检查只需要 Node/npm 运行时。主机和外部工具的前置要求取决于所选择的工作流;原生提供方指南会描述其支持的平台。

  • macOS 12 或更新版本
  • Ubuntu 24.04+、Fedora 41+,或 64 位 Arch Linux
  • Node.js 22.x (>=22.19)、24.x (>=24.11) 或 26+
  • npm;REA 不需要也不安装特定的 npm 版本

原生二进制分析需要 Hopper (https://www.hopperapp.com/) 或 Ghidra。Hopper 是独立的软件,拥有自己的许可;其演示版支持在厂商定义的限制范围内进行分析。REA 可以使用你已安装的 Ghidra。固件区域检查和显式提取使用调用方提供的 Linux 上的 Binwalk 和 Unblob。参见固件分析了解设置、来源、资源限制和原生交接。

静态 APK 分析使用单独提供的无头 JADX JAR 和 Java,不需要模拟器或执行 APK。参见Android 分析了解设置、CLI/MCP 操作、覆盖范围和公开的测试样本。

仓库 main 包含实验性的 Windows x64 Ghidra 支持,用于本地 NTFS 上的原生 x86-64 PE 应用,内置 Job Object、私有 DACL 和路径准入控制。在期望从 npm 包中获得此功能之前,请查看发布边界。参见 Windows Ghidra P0 了解前置要求和已验证的范围。

如果某些功能无法正常工作,请运行:

npx -y rea-agents@latest doctor

doctor 会检查你的主机、依赖项、分析工具和智能体配置,而不会对其进行更改。使用 --json 获取结构化诊断信息。

Linux 安装与故障排查

在 macOS 上,设置流程可以在批准后将 Hopper 安装到 ~/Applications。它会验证官方下载,不需要 Homebrew 或管理员权限。在受支持的 Linux 发行版上,设置流程可以通过你的系统包管理器安装 Hopper 及其演示会话依赖项。你可能会看到系统授权提示。演示会话使用私有虚拟显示,不会干扰你的桌面。参见 Hopper 安装 了解下载验证和平台细节。Linux 上的常规启动器是 /opt/hopper/bin/Hopper。如果 Hopper 安装在其他位置:

export HOPPER_LAUNCHER_PATH=/absolute/path/to/Hopper
rea doctor --json

如果 doctor 报告缺少分析引擎,但文件确实存在,请用以下命令检查共享库解析:

ldd /opt/hopper/bin/Hopper | grep 'not found'

安装缺失的包并重新运行 rea setup。Linux 演示需要 Xvfb、Python 3、X11 和 XTEST;经批准的设置会安装这些依赖项。如果你使用 curl 安装程序,必要时请将 ~/.local/bin 添加到 shell 的 PATH 中。REA 在 macOS 上将 HOPPER_LAUNCHER_PATH 默认设置为 /Applications/Hopper Disassembler.app/Contents/MacOS/hopper,在 Linux 上默认设置为 /opt/hopper/bin/Hopper。显式配置始终优先。

Ghidra 分析提供方

已经在使用 Ghidra 了?REA 可以在 Linux x64 或 macOS x64/arm64 上将其连接到你的智能体。它需要 Ghidra 12.1.4 和一个 64 位 JDK 21。在 macOS 上,你的 Ghidra 安装还必须包含适用于你架构的原生反编译器。设置好安装路径,然后运行设置:

export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
export JAVA_HOME=/absolute/path/to/jdk-21   # 当 java 和 javac 可从 PATH 解析时可选
rea doctor --json
rea setup
rea providers --json

设置流程会检查这些安装,并在批准后将其路径保存到你所选智能体的配置中。Ghidra 和 Java 必须已经安装;REA 不会下载或修改它们。该适配器暴露了清单、函数、内存和加载镜像检查,以及 Linux 和 macOS 上的原子函数标注编辑。annotate_native_function 会在会话数据库中编辑名称和入口注释,并返回刷新后的函数档案;可执行字节保持不变。Ghidra 不通过 REA 提供 GUI 控制。打开 Ghidra 目标会选中其提供方;第一次分析查询会启动导入和自动分析。该查询可能比客户端默认的请求超时时间更长。参见首次查询超时与恢复了解 SDK 示例和取消恢复。REA 分析目标的临时副本,并在会话关闭时删除临时项目。结果会标明 Ghidra 观察到了什么以及无法解析什么。反编译产生的是伪代码,而非原始源代码。Ghidra 还能导入带有显式 16 位 x86 实模式配置文件的 DOS MZ 可执行文件。函数结果包含完整的已观察主体范围,将所拥有的字节与包围范围区分开来。参见 DOS 分析指南了解地址、加壳和验证边界。Windows Ghidra P0 在本地 NTFS 上使用内置原生控件进行只读原生 x86-64 PE 边界分析;参见 Windows Ghidra P0 指南。参见 Ghidra 安装、提供方评估和测试了解配置细节、覆盖范围和真实提供方验证。

仅移除 REA 拥有的 MCP 注册和托管技能:

rea uninstall
rea uninstall --purge-data   # 仅额外移除 ~/.rea/cache 和 ~/.rea/state

卸载会保留 Hopper、Node.js、Evidence 文件、捕获数据、无关技能以及其他 MCP 服务器。它会拒绝格式错误的客户端配置,且从不遵循 purge-data 中的符号链接。

CLI 还是智能体?

如果你想要……使用
让智能体调查一个应用并构建功能运行设置,重启智能体,然后描述任务
从终端检查或反编译应用的某一部分rea analyze 或 rea decompile
验证、规范化或比较 Evidence 包rea evidence-import、rea evidence-export 或 rea compare
在不执行的情况下映射本地 JavaScript/Electron 应用rea analyze PATH 或 rea analyze-javascript-application
复用不可变的分析结果而无需重新启动提供方向深度分析命令传入 --snapshot /path/to/analysis.json
导入源码作为历史参考rea import-reference-source
捕获或比较受控的进程行为rea capture-process 或 rea compare-process-captures
rea evidence-import /absolute/path/to/evidence/bundle.json
rea evidence-export /absolute/path/to/evidence/bundle.json /absolute/path/to/evidence/canonical.json
rea compare /absolute/path/to/evidence/left.json /absolute/path/to/evidence/right.json

在不执行的情况下分析 JavaScript 应用目录或 ASAR:

rea analyze /absolute/path/to/releases/app.asar --json
rea analyze-javascript-application /absolute/path/to/releases/app.asar --json

对于目录或 .asar,当既未提供 --provider 也未提供 --snapshot 时,通用的 rea analyze 会自动选择静态 JavaScript 应用提供方。两种路径都会返回分析结果及其内联的 Evidence 上下文。

将较旧的源码树作为参考导入。REA 会将其与当前应用的观察结果分开保存:

rea import-reference-source /absolute/path/to/source

导入会读取传给命令的路径。文件名不会导致自动省略;文件通过哈希和元数据表示。要排除选定的路径,请将 REA_REFERENCE_SECRET_PATTERNS_JSON 设置为一个包含忽略模式的 JSON 字符串数组。除非显式指定 --overwrite,否则导出永远不会替换已有文件。

使用快照保存成功的分析结果,以便在后续运行中复用。仅当目标字节、操作、参数、分析工具和设置都匹配时,REA 才会复用结果。它不会缓存变更或依赖游标的调用。快照文件保持在本地,并使用仅属主可读写的权限。

rea analyze /absolute/path/to/app --snapshot /absolute/path/to/analysis/app.json
# 完全相同的查询可以从该快照中得到回答。
rea analyze /absolute/path/to/app --snapshot /absolute/path/to/analysis/app.json

确切的 CLI 缓存证据读取发生在任何提供方进程启动之前。在 MCP 会话中,向 open_binary 传入 snapshot_path,可在打开其匹配目标时原子地导入快照;在返回缓存的调用结果之前,MCP 提供方仍可能启动。向 close_binary 传入 snapshot_path,并在需要时传入 overwrite: true,可在释放 Hopper 资源之前原子地保存。如果保存失败,REA 会有意保持会话开启。

一次提示,完成一次完整调查

逆向工程 Notes 应用。找出离线搜索是如何工作的,解释它,并为我的项目使用 TypeScript 和 SQLite 构建一个版本。

REA 为智能体提供了一条从该请求到可运行代码的清晰路径:

步骤智能体做什么REA 工具
1打开并识别二进制文件open_binary、binary_overview
2寻找可能的离线搜索线索search_strings、search_procedures、list_names
3将这些线索与可执行代码关联起来find_xrefs_to_name、xrefs、procedure_callers
4重建相关的控制流get_call_graph、procedure_callees、procedure_info
5反编译相关例程procedure_pseudo_code、`procedu

相似文章

@realfxw:AI 正在彻底重塑底层逆向工程的游戏规则。最近开源的 REA(Reverse Engineer Anything)……

X AI KOLs Timeline

开源的 REA(Reverse Engineer Anything)通过 MCP 和 CLI,将一套底层逆向工程工具链——原生二进制反编译、动态执行追踪、跨技术栈逻辑复刻——封装为 AI Agent 插件,正在重塑自动化 Agent 进行二进制分析的方式,同时也带来了代码混淆、洁净室设计和验证等方面的新挑战。

REA Reverse – 逆向工程一切

Hacker News Top

REA 是一款面向编码代理的逆向工程工具,通过 `npx rea-agents@latest setup` 安装,可让 AI 代理检查程序的汇编与反编译代码,并用自然语言解释软件行为或重建功能逻辑。