Skip to content

dsh-rea

Verified

dsh-rea · v1.2.0 · MIT · Web UI

Registers the upstream REA (Reverse Engineer Anything) MCP server into DeepSeek Harness as mcp__rea__* tools — a third-party adapter, analysis is upstream's. · 把上游 REA 的 MCP 服务接入 DeepSeek Harness,提供 mcp__rea__* 工具(第三方适配,分析能力属上游)。

Install

dsh plugin add dsh-rea

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Readme

dsh-rea

npm version

把上游 REA — Reverse Engineer Anything 的 MCP 服务接入 DeepSeek Harness(dsh),其工具在会话中以 mcp__rea__* 的形式出现。

这是什么

一个小型 DSH bundle。它只有一行 rea:挂载官方 MCP 客户端插件(@deepseek-ai/dsh-mcp-client), 连接本机已安装的 rea --mcp stdio server;并在侧边栏插件页面提供一个页面,包含环境检查、 示例提问和设置。本包不含任何分析代码。

第三方适配器。 本仓库不属于 REA,不分发任何 REA 代码,也非 REA 作者维护。它负责连接 REA 并提供设置页面。 上游:github.com/morluto/rea(MIT)· 文档 · rea.tools · npm 包 rea-agents。 REA 自身的问题去它的 tracker;本插件的问题去 本仓库 issues。

它提供: 注册 mcp__rea__* 工具并自动选择跨平台启动方式;在插件页面告诉你还缺什么、怎么修复。

能做什么 / 不能做什么

分析能力属于上游;本节仅复述上游自身的约定,以设定期望。

  • 无法恢复完整源码。 对原生二进制上游返回伪代码和汇编,Android APK 返回反编译方法, JEB 返回伪代码,JavaScript/Electron 返回模块及其关系。上游工具约定声明伪代码"是反编译器 输出,非原始源码,且与其他提供商的输出非文本等价"。
  • 实际不可恢复:原始标识符名、类型、注释、宏和模板展开、构建脚本和资源。优化(内联、重排)、 符号剥离、混淆、加壳和虚拟机保护只会让输出更差。
  • 每个结果都带有置信度和限制说明(observed / derived / inferred,加显式限制列表)。 将它们视为证据,永远不要当作恢复的源码。
  • 适用场景:理解行为、定位实现、互操作和兼容性重实现、安全审查、迁移参考。要获取实际源码, 请走合法途径——上游仓库、厂商授权或厂商自有 SDK。

跨平台自动检测

shipped patch 使用 !!js 表达式在运行时选择正确的命令形式:

  • Windows:cmd.exe /c rea --mcp — npm shim 是 .cmd 文件,需要 shell。
  • macOS / Linux:rea --mcp — npm shim 是 PATH 上的直接可执行文件。

跨平台无需手动编辑。--mcp 标志是 rea --help 中文档标注的 stdio server 启动方式。

验证环境

组件 版本
REA (rea-agents) 6.5.0(需要 6.3.0 或更高)
DeepSeek Harness 0.2.1-alpha.5(npm CLI)
@deepseek-ai/dsh-mcp-client 0.2.1-alpha.5,harness 自带
Node.js 22.19+ / 24.11+ / 26+(REA 引擎要求)

shipped row 已实测:rea --mcp 响应了 MCP initialize 握手并返回 serverInfo: { name: "rea", version: "6.5.0" } 及 207 个工具。其输入 schema 中的全部 pattern (600 个,去重后 45 个)都能被 Rust regex 引擎编译——DeepSeek 原生模型等严格接口做的就是这项校验。

安装

前置条件

  • REA 接受的 Node.js 版本(^22.19.0 || ^24.11.0 || >=26.0.0)。
  • 全局安装 REA CLI,需要 6.3.0 或更高版本:npm i -g rea-agents@latest。 更早的版本在工具 schema 里使用了 \0 正则转义,DeepSeek 原生模型不接受,REA 连接期间每一轮 都会失败(见常见问题)。
  • 原生分析需要 Ghidra 12.1.x(Hopper / IDA 为替代方案,需各自授权)。 静态 JavaScript/Electron 和 .NET 分析无需引擎。

插件

dsh plugin --profile <profile> add dsh-rea

也可以在 DSH Web 侧边栏的插件页面安装 dsh-rea。

设置与配置——在插件页面完成

打开 DSH Web 侧边栏的插件,选择 REA 逆向分析。页面分三部分:

  1. 环境检查——REA 命令行工具及版本(需 6.3.0+)、mcp__rea__* 工具是否已加载、Ghidra(可选)、 Java(Ghidra 需要)。需要处理的项会说明原因并给出修复命令,可一键复制;点重新检查再检测一次。
  2. 试一试——可以直接贴进对话的示例提问。
  3. 设置——保存到你的 profile,REA 会立即用新设置重启:
设置 默认值 说明
Ghidra 安装目录(ghidraInstallDir) 空 作为 GHIDRA_INSTALL_DIR 传给 REA;留空则沿用环境变量。
单次工具调用超时(toolCallTimeoutMs) 300000 反编译大型程序可能需要几分钟。

没有 Ghidra 时,JavaScript / Electron 和 .NET 分析照常可用;原生程序(exe / ELF / Mach-O)需要 Ghidra 12.1.x 和 JDK 21+。

也可以在 profile 的 cordis.patch.yml 里手动固定设置:

- id: rea
  config:
    ghidraInstallDir: /Applications/ghidra_12.1.1_PUBLIC

验证

环境检查里 REA 命令行工具和工具加载两项显示为绿色。然后在对话里试一句,例如 "用 REA 分析 /Applications/Visual Studio Code.app 这个 Electron 应用"。配置了 Ghidra 后, binary_session 会报告引擎检查(configuration / installation / headless / native_decompiler / java),应全部 ok: true。

范围和注意事项

REA 6.5.0 暴露 207 个工具,每个会话的工具列表会明显变长(不需要时可在插件页面禁用本 bundle);该行设置 failOnStartupError: false,这样 REA 缺失不会阻止 harness 启动。部分 REA 工具会启动进程、 写文件和访问网络——DSH 的权限策略会介入。只分析你有权检查的制品。

更新 — 两件独立的事,都是手动

  • 本插件不会自我更新:dsh plugin --profile <profile> add dsh-rea@latest(或在插件页面更新)。 下面更新 REA 不会更新本插件,更新本插件也不会碰 REA。
  • 上游 REA:npm i -g rea-agents@latest,然后重启 harness,让 MCP 子进程用新版本重新启动。 其 bin(scripts/rea.mjs)跨版本稳定,此处无需改动。
  • Ghidra 由 REA 版本门控(当前 12.1.x):先更新 REA,再检查它是否接受更新的 Ghidra。
  • DeepSeek Harness:harness 升级可能改变 MCP client 的 config schema——用 Config.listConfigs name=@deepseek-ai/dsh-mcp-client 检查该行并调整字段名。

常见问题

Invalid schema for function 'mcp__rea__capture_process_scenario': "^[^=\\0]+$" is not a "regex" (或任何 mcp__rea__* 的 schema 报错)——已安装的 REA 低于 6.3.0。它的 schema 使用了 DeepSeek 原生模型不接受的正则写法,接口会拒绝整个请求。上游已在 morluto/rea#1329 修复:

npm i -g rea-agents@latest
rea --version        # 6.3.0 或更高

然后重启 harness。

看不到 mcp__rea__* 工具——harness 的 PATH 里找不到 rea(which rea),或 REA 启动失败; 该行设置了 failOnStartupError: false,harness 会继续运行并记录错误。

启动时本 bundle 被跳过——本版本声明了 @deepseek-ai/dsh-mcp-client 的 peer 版本范围(0.2.x)。 超出该范围的 harness 可能改变了 MCP client 的配置格式,请更新本插件。

许可证

MIT(本适配器)。REA 为 MIT,版权归其作者;Ghidra 为 Apache-2.0,版权归 NSA。此处不分发任何 上游代码。