关于 Reverse Engine Anything Plus
Reverse Engine Anything Plus 是面向逆向工程人员和 Agent 的 MCP 服务与命令行工具,结合 Windows 实时调试和广泛的静态分析。它明确报告不支持的后端,并要求实时修改操作先获确认。
主要功能
- 01通过 x64dbg、cdb、Frida 和 radare2 实时调试
- 02分析原生程序、.NET、Android、WASM 等
- 03单次调查生成证据包
- 04通过命令行检查环境并执行分析
- 05支持 stdio 和流式 HTTP 传输
适用场景
- 01一次调查二进制文件并汇集证据
- 02经确认后调试 Windows 实时进程
- 03分析 APK、.NET、固件或 Web 文件
- 04任务开始前检查已安装的分析后端
MCP 相关
向 MCP 客户端提供 191 个工具、2 个资源和 7 个提示词,支持 stdio 和流式 HTTP 传输。工具集配置可限制注册的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Reverse Engine Anything Plus
一个用于逆向工程的 MCP 服务——实时 Windows 调试,以及包含 161 个工具的静态分析套件,支持 PE/ELF、Mach-O、.NET、APK、IL2CPP、WASM/EVM、固件和 Web。
你的 Agent 提出问题;rea-plus 检查二进制文件并提供有证据的答案,而非猜测。
✨ 为什么选择 rea-plus?
- 🐞 真正的调试,而非截图 — 通过统一的、固定为 30 个工具的核心,提供 x64dbg、cdb (WinDbg) 和 Frida 引擎:断点、单步执行、寄存器、内存、调用栈和时光回溯检查点。
- 🧰 161 个静态分析工具 — Ghidra headless、rizin/radare2、.NET CIL (dnfile) 和 ILSpy、jadx/apktool/adb、WASM + EVM、固件、浏览器/HAR、UPX、PE/ELF/Mach-O 读取器等。
- 🤝 设计诚实可靠 — 缺少后端时会返回
capability_unsupported并提示安装。绝不伪造结果,错误会以规范的 MCPisError返回,且修改实时调试状态的调用必须设置confirm:true。 - 🧩 191 个工具、2 个资源、7 个提示词 — 完整的生成式目录位于
docs/TOOLS.md;REA_TOOLSETS可让小上下文客户端仅加载某个配置片段(参见配置)。如果没有 HTTP 令牌,则只会注册一个包含 44 个工具的只读许可列表,而非全部功能。 - 🔌 两种传输方式 — 为本地 Agent 提供 stdio,为共享部署提供可流式 HTTP(
/mcp+/health、bearer token、localhost Host/Origin 验证)。 - 🧪 以实证为据,而非空口承诺 — 默认测试通道覆盖 91 个文件,为已发布版本提供 Ubuntu CI,并通过协议测试驱动实际编译的服务。
$ rea-plus-cli doctor # what is installed on this machine, what is missing
$ rea-plus-cli analyze-evm "transfer(address,uint256)"
transfer(address,uint256) -> 0xa9059cbb
// One MCP call your agent makes:
{ "name": "rea_investigate", "arguments": { "path": "sample.exe" } }
// -> sniff + confidence + provider plan + evidence bundle, in one answer
🚀 安装
要求: Node.js ≥ 20。其他所有组件(Ghidra、rizin、jadx、Frida 工具等)都是可选的——有可用后端时,相应工具便会启用;运行
doctor查看本机环境概况。实时调试器(x64dbg/cdb/Frida attach)需要 Windows;静态分析可在任何平台运行。
一键安装(Cursor / VS Code)
安装向导(独立下载)
没有 npm?从最新版本下载 setup.mjs(Windows 版另有 setup.ps1)——仅需 Node.js 20+:
node setup.mjs --list # detect installed clients
node setup.mjs --dry-run # preview without writing
node setup.mjs --yes # write MCP config (asks unless --yes)
.\setup.ps1 --list
.\setup.ps1 --yes
也可以在包内运行:npx -y rea-plus rea-plus-cli setup(使用相同的向导)。
npx(无需克隆)
任何 stdio MCP 客户端都可以直接从 npm registry 启动它:
{
"mcpServers": {
"rea-plus": {
"command": "npx",
"args": ["-y", "rea-plus"]
}
}
}
发布状态:
[email protected]已发布到 npm registry,io.github.Alyhnte/rea-plus已发布到 MCP Registry。支持的安装方式为npx -y rea-plus(如上)和 GHCR(参见 Docker)。
克隆并构建
git clone https://github.com/Alyhnte/ReaPlus.git
cd ReaPlus
npm ci
npm run build # tsc + runtime assets (frida-agent.js, Ghidra scripts) -> dist/
npm start # stdio server (dist/server.js)
# Optional HTTP transport:
node dist/server.js --transport http --port 3848
# -> GET http://127.0.0.1:3848/health
# -> POST http://127.0.0.1:3848/mcp
可选扩展
# Browser tools (Playwright is an optional dependency, loaded lazily):
npm i playwright && npx playwright install chromium
然后让你的 Agent 使用它,并请求它检查某些内容。
🔌 客户端配置
以下客户端使用的都是同一个服务。可直接使用的配置文件位于 configs/。
Claude Desktop
添加到 claude_desktop_config.json(参见 configs/claude-desktop/):
{
"mcpServers": {
"rea-plus": { "command": "npx", "args": ["-y", "rea-plus"] }
}
}
Cursor
点击上方的 Add to Cursor,或使用 configs/cursor/mcp.stdio.json(克隆路径形式)/ mcp.http.json(HTTP 形式)。
VS Code
点击上方的 Install in VS Code,或将 configs/vscode/mcp.json 复制到工作区中的 .vscode/mcp.json。
Windsurf
将 configs/windsurf/mcp_config.json 用作你的 mcp_config.json。
Codex
将 configs/codex/config.toml 追加到 ~/.codex/config.toml:
[mcp_servers.rea-plus]
command = "npx"
args = ["-y", "rea-plus"]
opencode / 通用 HTTP
DBG_BRIDGE_TOKEN=your-secret node dist/server.js --transport http --port 3848
# clients connect to http://127.0.0.1:3848/mcp with Authorization: Bearer <token>
stdio 和 HTTP 变体请参见 configs/opencode/。
🐳 Docker
# Build locally (works today):
docker build -t rea-plus .
# stdio (for MCP clients that spawn containers):
docker run -i --rm rea-plus
# HTTP:
docker run -p 3848:3848 -e DBG_BRIDGE_TOKEN=your-secret rea-plus --transport http --port 3848 --host 0.0.0.0
每次发布时都会将镜像发布到 GHCR(ghcr.io/alyhnte/reaplus)。仅适用于 Windows 的
调试器(x64dbg/cdb)在 Linux 容器中会报告 capability_unsupported;静态
分析、CLI 和两种传输方式均可正常工作。
🧰 功能
完整的生成式参考文档——191 个工具 + 2 个资源(rea-plus://server-info、rea-plus://capabilities-safety)+ 7 个提示词(packer-triage、dotnet-malware-triage、android-triage、pe-crash-triage、elf-linux-triage、binary-diff、evidence-report)——见 docs/TOOLS.md。下表仅为领域概要。
| 领域 | 提供的功能 | 引擎 / 后端 |
|---|---|---|
| 实时调试 | 断点、单步执行/继续、寄存器、内存、调用栈、检查点和回退 | x64dbg · cdb · Frida · radare2(conduit 核心,30 个冻结工具) |
| 原生静态分析(PE/ELF) | 反汇编、CFG、交叉引用、字符串、导入、PDB/DWARF、反编译 | Ghidra headless · rizin/Cutter |
| .NET | 检测真实 CLR,通过 dnfile 转储 CIL,使用 ILSpy 反编译 | dnfile · ilspycmd |
| Android | APK 解码/构建、框架信息、adb 桥接 | jadx · apktool · aapt2 · adb |
| 动态插桩 | 附加/生成进程、API 跟踪、条件断点、暂停进程 | Frida 17 |
| 行为分析 | 记录 SHA-256 的进程运行、网络捕获(HAR)、事件时间线 | mitmproxy · 进程捕获 |
| Web / 浏览器 | 导航、点击、屏幕截图、存储和控制台捕获 | Playwright(可选附加组件) |
| WASM / EVM | 验证(wabt)、反汇编、函数选择器、操作码处理 | wabt · 离线 keccak |
| 固件与特殊目标 | 固件分流、DOS/MIPS/AOT/Go 预扫描、打包器探测(UPX→.NET→转储流程) | 静态检查 · UPX |
| Mach-O / Apple | 文件头和加载命令、otool 输出、读取 bundle/plist(无后端时会如实报错) | 内置读取器 · otool |
| Unity IL2CPP | Il2CppDumper 转储 + global-metadata 类/方法计数(缺少文件时会如实报错) | Il2CppDumper · 元数据读取器 |
| 二进制差异比较 | 函数列表(名称/地址 + 哈希)和版本间差异比较 | 内置 |
| PCAP / TLS | 流重组 + 基于密钥日志的 TLS 解密 | tshark · keylog |
| Android 动态分析 | 生成动态分析流程 + 验证试运行流程 | 内置流程 |
| 扩展性 | 并行扫描仓库(4 个进程池,可取消) | 内置 |
| 调查 | 一键分流:探测 → 置信度 → 提供方计划 → 证据包 | rea_investigate 编排器 |
| 辅助功能 | 能力探测和缓存、回退链、配置建议、遥测 | 内置,离线运行 |
| 入门配置 | setup 向导写入客户端配置(需确认);doctor --fix 提议安装命令,仅在使用 --yes 时运行 | rea-plus-cli |
⚙️ 工作原理
flowchart LR
A["AI agent / MCP client"] -->|stdio or streamable HTTP| S["rea-plus server"]
S --> C["Conduit core · 30 frozen tools<br/>x64dbg · cdb · Frida · radare2"]
S --> D["rea domains · 161 tools<br/>Ghidra · rizin · jadx · dnfile · wabt · Playwright"]
C --> T["Target binary / live process"]
D --> T
C --> E["Evidence bundle + obligation ledger"]
D --> E
E --> A
- 冻结核心。 30 个 conduit 工具名称不可更改(
src/facade/toolNamespace.ts);禁止重命名,因此现有 conduit 客户端可以继续使用。 - rea 域。 161 个
rea_*工具在src/server/registerReaTools.ts中集中注册。 - 确认门控。 会修改目标的实时操作需要
confirm:true;否则会返回confirmation_required,绝不会静默地产生副作用。 - 单一目录。
mergedCatalog()(8 个 conduit + 16 个 rea 前置条件条目)是doctor获取版本和下载链接的唯一数据源。 - 资源 + 提示词。 两个静态只读资源(
rea-plus://server-info、rea-plus://capabilities-safety)和七个无副作用提示词(packer-triage、dotnet-malware-triage、android-triage、pe-crash-triage、elf-linux-triage、binary-diff、evidence-report)与工具一同注册;提示词只返回文本,从不运行工具。 - 类型化输出(部分支持)。
structuredContent与文本 JSON 内容一致,覆盖范围刻意保持为部分支持:187 个工具声明了outputSchema,191 个工具带有注解。模式集合之外的工具会返回未声明输出模式的文本 JSON——请参阅docs/TOOLS.md中各工具的说明。 - 工具集配置。
REA_TOOLSETS可将注册范围筛选为某个配置片段(以逗号分隔的并集;未知名称会导致启动失败,而不是静默回退到all)。资源和提示词不会被筛选。新工具只会加入all(失败时默认关闭)。 - Roots(旧版 + 现代版)。 在旧版 stdio 路径中设置
REA_ROOTS=1时,客户端 roots 只能缩小REA_WORKSPACE_ROOT的范围,绝不能扩大范围。现代协议的 Roots 使用 SDK 多轮往返流程(inputRequired+inputResponses);notifications/roots/list_changed仅存在于 2026 年之前,因此会在下一轮 MRTR 中刷新。 - 进度(通用化)。 阶段辅助函数(
createStageProgress/onAbort)会控制通知频率(约 20 次/秒),并在取消时清理;rea_process_run试点保持不变,rea_scan_repo+rea_jadx_full则采用分阶段处理。其他同步处理程序不在此范围内。 - 异步作业(可选启用)。 设置
REA_ASYNC_JOBS=1后,五个作业工具(rea_job_start/status/result/cancel/list)会通过有界内存队列(并发数为 2)运行白名单中的工具(rea_process_run、rea_scan_repo、rea_behavior_run)。默认工具集仍为 191 个工具;启用可选功能后为 196 个。
💻 命令行
可以在终端中对相同的引擎编写脚本(使用 rea-plus-cli,或在克隆仓库中使用 node dist/cli/index.js):
rea-plus-cli analyze-evm "transfer(address,uint256)" # -> 0xa9059cbb (fully offline)
rea-plus-cli analyze-evm "approve(address,uint256)" --json
rea-plus-cli analyze-wasm sample.wat --json
rea-plus-cli analyze-js bundle.js bundle.js.map
rea-plus-cli doctor --json # per-tool readiness report
rea-plus-cli doctor --fix # propose install commands for missing tools (--yes applies them)
rea-plus-cli setup --dry-run # preview client config changes before writing
🔧 配置
所有配置均通过环境变量设置——无需在服务本身编辑配置文件。
| 变量 | 用途 |
|---|---|
DBG_BRIDGE_TOKEN | HTTP 传输的 Bearer 令牌(HTTP 下未设置 = 关闭身份验证 + 启动警告 + 仅注册 44 个只读允许列表工具,并与 REA_TOOLSETS 取交集;不影响 stdio) |
DBG_BRIDGE_FRIDA_TIMEOUT_MS | Frida Agent RPC 超时时间(默认 30000) |
REA_GHIDRA_DIR | 用于基于提供程序的分析的 Ghidra 安装目录 |
REA_UPX_BIN · REA_WABT_BIN · REA_AAPT2_BIN | 工具不在 PATH 中时指定其路径 |
REA_JEB_MCP_URL · REA_JEB_ALLOW_REMOTE | JEB 端点;远程(非环回)连接需要设置 REA_JEB_ALLOW_REMOTE=1 |
REA_CDP_URL | 将浏览器工具连接到现有的 Chrome DevTools 端点 |
REA_CORELIB_DLL | 用于 CIL 检查的首选 .NET 运行时 DLL |
REA_WORKSPACE_ROOT | 工作区根目录(可使用路径分隔符分隔多个根目录)。设置后,rea_* 路径参数、conduit 的 open_target/debug_open 路径以及用户可见的衍生写入(.unpacked、.extracted、HAR 输出)必须解析到某个根目录内;未设置 = 不限制。操作员临时文件/缓存区域按设计不受此边界限制(浏览器产物目录、Ghidra 临时项目/输入目录、hopper 临时请求文件、apktool 框架缓存) |
REA_ROOTS | 必须恰好设置为 1 才能启用旧版 stdio Roots 试点。客户端的 file:// 根目录与 REA_WORKSPACE_ROOT 取交集,且只能缩小其范围;此标志不会启用现代协议 Roots |
REA_TOOLSETS | 要注册的工具配置,以逗号分隔:all(默认,191)、minimal(8)、static(98)、android(27)、dotnet(20)、web(26)、debug(50)。组合配置取并集;未知或空名称会导致启动失败。资源/提示词不受影响 |
REA_ASYNC_JOBS | 必须恰好设置为 1 才会注册 5 个异步作业工具(共 192 个工具)。作业仅保存在内存中,最多同时运行 2 个,允许列表为 rea_process_run + rea_scan_repo + rea_behavior_run |
REA_AUDIT_LOG | JSONL 审计日志的路径(适用于两种传输方式)。每行仅包含 ts、transport、tool、durationMs、isError——绝不记录参数、令牌、路径或目标内容。写入错误会发出一次警告并禁用审计,不会导致服务崩溃 |
REA_HTTP_RATE_LIMIT_PER_MIN | 每个客户端 IP 每分钟的 HTTP 请求数(默认 120);超出时返回 429。非正整数值会导致启动失败 |
REA_HTTP_MAX_CONCURRENT | 同时处理中的 HTTP 请求数上限(默认 16);超出时返回 429。非正整数值会导致启动失败 |
外部工具仅通过这些变量和 PATH 发现——不会硬编码特定于机器的路径。
🔒 安全模型
rea-plus 是一款调试器:根据设计,它可以启动、附加到本地进程并对其进行插桩。请将对它的访问视同 Shell 访问。
- 优先使用 stdio。 默认传输方式不会开放端口。
- HTTP 受到严格限制。 使用 Bearer 令牌(恒定时间比较)、针对 DNS 重绑定/CSRF 的 localhost Host/Origin 验证、每 IP 速率和并发限制(
REA_HTTP_RATE_LIMIT_PER_MIN、REA_HTTP_MAX_CONCURRENT),并且——在未提供令牌启动时——发出醒目警告,同时将可用范围缩减为 44 个只读、不涉及路径的允许列表工具(与REA_TOOLSETS取交集),而非全部 191 个工具。 - 工作区边界(可选启用)。 设置
REA_WORKSPACE_ROOT后,rea_*路径参数、conduit 的open_target/debug_open路径,以及用户可见的派生写入都必须位于根目录内(通过 realpath 检查,因此无法通过 junction/symlink 逃逸)。运维临时文件/缓存区域(浏览器产物、Ghidra 临时目录、hopper 临时请求文件、apktool 框架缓存)是有文档说明的例外,不强制置于根目录内。 - 审计但不记录内容。
REA_AUDIT_LOG会为每次工具调用记录一行 JSONL,仅包含时间、传输方式、工具名称、耗时和isError——绝不记录参数、令牌、路径或目标内容。 - 输入经过验证。 传递给后端命令语言的地址仅限十六进制/十进制/符号形式——不会向 r2/rizin 注入
;/!命令。 - SSRF 防护。 除非运维人员主动允许,否则出站辅助调用(例如 JEB 桥接)仅限 loopback;始终屏蔽链路本地/元数据主机。
- 不伪造结果。 缺少能力 ⇒ 返回带原因的
capability_unsupported;处理程序出错 ⇒ MCPisError仅包含错误消息(不含堆栈跟踪)。 - 静态路径中不执行目标。 检查工具只读取字节,绝不运行样本。请在 VM 中运行未知二进制文件——这正是 live 通道的用途。
🧪 测试
共有 97 个测试文件。默认测试通道(npm test)运行 91 个文件,并排除 live 注入/调试器、数据包捕获、浏览器、e2e 和本地 Ghidra 测试套件——这些测试会接触真实进程或依赖特定机器上的安装,适合在 VM 或专用 CI 任务中运行(npm run test:live)。每个文件的运行时限为 90 秒,超时后会终止进程树,因此挂起的后端绝不会卡住整个测试通道。已发布分支的 CI 会在 Ubuntu 上运行默认测试通道(Node 20 + 22)。
npm test # default lane: 91 files (live suites excluded)
npm run test:live # everything, incl. frida/sniff/browser/e2e/ghidra (VM/CI only)
npm run test:e2e # spawn -> /health -> tools/list
node --test tests/evm.test.mjs # single-domain runs work too
详情:docs/VERIFY.md · docs/MCP-CONTRACTS.md · CHANGELOG.md
🎬 示例会话
以下是三个端到端分析会话,使用真实工具命令和真实输出编写(不编造数字;缺少后端时会说明 capability_unsupported 路径):
docs/example-sessions/ghidra-analysis.md— Ghidra 无头模式:导入 + 分析、rea_ghidra_*(函数/反汇编/字符串/反编译)、原始analyzeHeadless/pyghidraRun等效命令、常见错误docs/example-sessions/ida-comparison.md— IDAidat批处理(rea_ida_idb/rea_ida_flirt)、未安装 IDA 时的行为、Ghidra ↔ r2 函数比较(rea_diff_*)docs/example-sessions/r2-triage.md— 使用 radare2 进行 60 秒快速分析(iI/iz/afl/pdf)+rea_r2_callgraph/rea_r2_esil
🗺️ 路线图
当前位于列表靠前位置——完整的优先级表见 docs/ROADMAP.md:
- npm + MCP Registry 已上线(
[email protected]、io.github.Alyhnte/rea-plus)——支持的安装方式为npx -y rea-plus和 GHCR - 类型化接口已定型:187 个工具带有
outputSchema(4 个永久不带 schema),191 个工具带有注解;异步允许列表包含 3 个工具,进度辅助功能覆盖分阶段工具 - 完成黄金二进制语料库(每个提供方的预期输出哈希)——包括仍未完成的 live Frida VM 检查和 DEX 黄金 APK 验收测试
- 发布版本签名 + SBOM,以及有文档说明的 live 工作 VM 沙箱配置
❓ 常见问题
我需要 Ghidra、IDA、Hopper 或 JEB 吗? 不需要。静态 JS/.NET/WASM/EVM 分析和离线检查无需这些工具;如已安装,依赖提供程序的深度分析会使用你自己的安装版本。rea-plus 从不捆绑或授权商业工具。
为什么工具会返回 capability_unsupported?
这台机器上未安装对应的后端。响应会说明缺少哪项能力,以及在哪里获取(与 doctor 读取的目录相同)。安装后,工具即可使用——无需更改代码。
为什么实时操作需要 confirm:true?
这些操作会修改正在运行的目标(断点、单步执行、内存写入)。这道关卡可避免 Agent 意外更改程序状态。
它会与 conduit 冲突吗? 不会。Conduit 默认使用端口 3847;rea-plus 使用 3848,且 30 个 conduit 工具名称保持不变。
npm 提示找不到软件包?
更新缓存——[email protected] 已发布到 npm registry 和 MCP Registry。在上述所有场景中使用 npx -y rea-plus 或 GHCR 镜像。
🤝 贡献
欢迎提交 Issue 和 PR——包括错误报告、功能想法和文档。提交前请运行 npm run typecheck 和 npm test,保持 conduit 工具名称不变,并确保新工具如实失败(返回 capability_unsupported,绝不伪造 ok)。
如果 rea-plus 为你省下了半天的十六进制编辑器考古工作,点个 ⭐ 就能帮助其他逆向工程师发现它。
📄 许可证
MIT。rea-plus 代码采用 MIT 许可证;第三方工具和提供程序遵循各自的许可证——你必须根据供应商条款合法获取商业工具(IDA Pro、Hopper、JEB),并获得使用授权。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。