mcpField
R
Reverse Engine Anything Plus

Reverse Engine Anything Plus

本地服务
github.com/Alyhnte开发工具11 周前更新

关于 Reverse Engine Anything Plus

Reverse Engine Anything Plus 是面向逆向工程人员和 Agent 的 MCP 服务与命令行工具,结合 Windows 实时调试和广泛的静态分析。它明确报告不支持的后端,并要求实时修改操作先获确认。

主要功能

  1. 01通过 x64dbg、cdb、Frida 和 radare2 实时调试
  2. 02分析原生程序、.NET、Android、WASM 等
  3. 03单次调查生成证据包
  4. 04通过命令行检查环境并执行分析
  5. 05支持 stdio 和流式 HTTP 传输

适用场景

  1. 01一次调查二进制文件并汇集证据
  2. 02经确认后调试 Windows 实时进程
  3. 03分析 APK、.NET、固件或 Web 文件
  4. 04任务开始前检查已安装的分析后端

MCP 相关

向 MCP 客户端提供 191 个工具、2 个资源和 7 个提示词,支持 stdio 和流式 HTTP 传输。工具集配置可限制注册的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"alyhnte-rea-plus": {
"command": "npx",
"args": [
"-y",
"rea-plus"
]
}
}
}
启动命令npx -y rea-plus

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmrea-plus0.13.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

rea-plus 徽标

Reverse Engine Anything Plus

一个用于逆向工程的 MCP 服务——实时 Windows 调试,以及包含 161 个工具的静态分析套件,支持 PE/ELF、Mach-O、.NET、APK、IL2CPP、WASM/EVM、固件和 Web。

你的 Agent 提出问题;rea-plus 检查二进制文件并提供有证据的答案,而非猜测。

CI Release Tools Tests Node License: MIT

安装 · 客户端 · Docker · 功能 · 工具 · 工作原理 · 安全模型 · 路线图 · 常见问题


✨ 为什么选择 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 并提示安装。绝不伪造结果,错误会以规范的 MCP isError 返回,且修改实时调试状态的调用必须设置 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)

Add to Cursor Install in 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"] }
  }
}
Claude Code
claude mcp add rea-plus -- npx -y rea-plus

也可以将 configs/claude-code/.mcp.json 放到项目根目录中。

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
AndroidAPK 解码/构建、框架信息、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 IL2CPPIl2CppDumper 转储 + 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_TOKENHTTP 传输的 Bearer 令牌(HTTP 下未设置 = 关闭身份验证 + 启动警告 + 仅注册 44 个只读允许列表工具,并与 REA_TOOLSETS 取交集;不影响 stdio)
DBG_BRIDGE_FRIDA_TIMEOUT_MSFrida Agent RPC 超时时间(默认 30000)
REA_GHIDRA_DIR用于基于提供程序的分析的 Ghidra 安装目录
REA_UPX_BIN · REA_WABT_BIN · REA_AAPT2_BIN工具不在 PATH 中时指定其路径
REA_JEB_MCP_URL · REA_JEB_ALLOW_REMOTEJEB 端点;远程(非环回)连接需要设置 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_LOGJSONL 审计日志的路径(适用于两种传输方式)。每行仅包含 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;处理程序出错 ⇒ MCP isError 仅包含错误消息(不含堆栈跟踪)。
  • 静态路径中不执行目标。 检查工具只读取字节,绝不运行样本。请在 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/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),并获得使用授权。

Reverse Engine Anything Plus · 基于 conduit 实时调试核心构建 · 发行版 · 路线图 · 更新日志

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。