dsh-rea:在 DeepSeek Harness 中挂载 REA 逆向分析 MCP 工具

前言

在 DeepSeek Harness(DSH)里做安全审计、兼容性分析或理解闭源/编译产物行为时,往往需要把逆向工程能力接到会话里的工具列表。单独起一个 MCP 服务、再手写 Cordis 行配置,步骤多且容易在 Windows 与 macOS/Linux 的启动命令上踩坑。下面介绍的 dsh-rea 是社区维护的 DSH bundle:把上游 REA(Reverse Engineer Anything) 的 rea --mcp stdio 服务接入 Harness,在会话中注册为 mcp__rea__* 工具,并在 Web 侧 Plugins 页面提供安装检查、示例提示与可保存的设置。

这是什么

dsh-rea(npm 包名 dsh-rea,当前版本 1.2.0,MIT)由 dushudou 维护,归类为 DSH 社区目录中的联网工具插件。它不包含 REA 的分析实现,仅通过 @deepseek-ai/dsh-mcp-client 挂载本机已安装的 REA CLI,并附带配置页与跨平台命令自动检测。分析能力与限制以上游 REA 为准;REA 自身问题应到 morluto/rea,本插件问题到 dsh-rea issues。

接入后,Harness 会话可见大量以 mcp__rea__ 为前缀的工具(README 记载在 REA 6.5.0 下经实测为 207 个)。bundle 对启动失败设置 failOnStartupError: false,REA 未安装或启动失败时不会拖垮整个 Harness,但对应工具不会出现。

核心功能

MCP 工具注册

bundle 在 profile 中增加一行 rea,启动子进程执行上游文档规定的 stdio 形式:rea --mcp。补丁用 !!js 在运行时选择命令:

  • Windows:cmd.exe /c rea --mcp(npm shim 为 .cmd,需经 shell)
  • macOS / Linux:rea --mcp(可执行文件在 PATH 上)

换平台一般无需手改配置。

Plugins 页面

在 DSH Web 侧栏打开 Plugins,选择 REA reverse engineering,页面分三块:

  1. Setup check:检查 REA CLI 及版本(需 6.3.0+)、mcp__rea__* 是否已加载、可选的 Ghidra、以及 Ghidra 所需的 Java;缺项会说明原因并给出可复制命令,Check again 可重跑。
  2. Try it:可粘贴到对话中的示例提示。
  3. Settings:写入 profile,保存后 REA 会按新值重启:
配置项 默认值 含义
ghidraInstallDir 空 传给 REA 的 GHIDRA_INSTALL_DIR;空则继承环境变量
toolCallTimeoutMs 300000 单次工具调用超时;大程序反编译可能需数分钟

也可在 profile 的 cordis.patch.yml 中手写覆盖,例如:

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

能力边界(上游契约摘要)

本插件不实现分析逻辑,但 README 明确列出了对结果的预期,避免误用:

  • 不能还原完整源代码:原生二进制多为伪代码与汇编;Android APK 为反编译方法;JEB 单元为伪代码;JavaScript/Electron 为模块及关系。伪代码是反编译器输出,不等同于原始源码。
  • 实践中难以恢复:原始标识符名、类型、注释、宏与模板展开、构建脚本与资源等;优化、去符号、混淆、加壳等会进一步降低可读性。
  • 结果带 confidence / limitations(observed / derived / inferred 及限制列表),应作证据阅读,而非当作 recovered source。
  • 适合:理解行为、定位实现、互操作与兼容重写、安全评审、迁移参考。要合法获得源码,应走上游仓库、厂商授权或官方 SDK。

无 Ghidra 时仍可做 JavaScript/Electron 与 .NET 静态分析;分析原生二进制(exe / ELF / Mach-O)需要 Ghidra 12.1.x 与 JDK 21+(Hopper / IDA 为上游支持的其他引擎,许可各自独立)。

环境与版本

安装前建议对照 README 中的验证矩阵:

组件 版本要求
REA(rea-agents) 6.3.0 或更新(README 验证 6.5.0)
DeepSeek Harness CLI 0.2.1-alpha.5(npm)
@deepseek-ai/dsh-mcp-client 0.2.1-alpha.5(由 Harness 捆绑)
Node.js ^22.19.0 \|\| ^24.11.0 \|\| >=26.0.0(REA 引擎要求);插件包 engines 为 >=20

全局安装 REA:

npm i -g rea-agents@latest

低于 6.3.0 的 REA 会在工具 schema 中使用 DeepSeek 原生模型拒绝的正则(如含 \0 转义),连接 REA 后可能导致整轮请求失败,需按故障排除一节升级。

安装与启用

前置:满足上述 Node 与 REA 版本;原生分析另需 Ghidra 12.1.x 与 Java。

安装插件(命令来自官方 README):

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

也可在 DSH Web Plugins 页面安装 dsh-rea。

更新(二者独立、均需手动):

  • 本插件:dsh plugin --profile <profile> add dsh-rea@latest 或 Plugins 页操作。
  • 上游 REA:npm i -g rea-agents@latest 后重启 Harness,使 MCP 子进程加载新二进制。

典型用法

  1. 安装并全局安装 REA 后,在 Plugins 页完成 Setup check,确认 REA CLI 与 mcp__rea__* 为绿色。
  2. 需要分析原生程序时,在 Settings 填写 ghidraInstallDir 或设置环境变量 GHIDRA_INSTALL_DIR。
  3. 在对话中直接说明任务。README 示例:让模型使用 REA 分析本机 Electron 应用,例如指向 /Applications/Visual Studio Code.app。配置 Ghidra 后,可通过 binary_session 查看引擎检查项(configuration / installation / headless / native_decompiler / java)是否均为 ok: true。

Plugins 页的 Try it 区提供更多可复制提示,适合作为第一次联调的模板。

适用场景与注意

适合:已在 DSH 工作流中需要 REA 能力、希望少写 MCP 行配置、并希望在 Web 里一眼看到「缺什么、怎么补」的开发者与安全分析人员。

注意:

  • REA 在 6.5.0 暴露 207 个工具,启用后单会话工具列表会明显变长;不需要时可在 Plugins 页关闭 bundle。
  • 部分 REA 工具会启动进程、写文件或访问网络,行为受 DSH 权限策略约束;仅分析你有权检视的制品。
  • 插件以当前 DSH 进程的用户与 PATH 运行;安装前请阅读 仓库源码 与 MIT 许可证,自行评估信任边界。
  • DSH 社区插件目录(如 SkillHub 上的 dsh-rea 页)为独立生态站点,与 DeepSeek / 幻方无官方从属关系;「一切皆插件」是 Harness 的产品思路,本文介绍的是第三方适配层,非 REA 官方发行物。

常见故障:

  • Schema 报错 Invalid schema for function 'mcp__rea__...':REA 版本过旧,执行 npm i -g rea-agents@latest 并用 rea --version 确认 ≥ 6.3.0,重启 Harness。
  • 没有 mcp__rea__* 工具:rea 不在 Harness 所见 PATH(可用 which rea 核对),或 REA 启动失败;查看 Harness 日志。

结尾

dsh-rea 把本机 REA MCP 服务标准化接到 DeepSeek Harness,统一工具名为 mcp__rea__*,并用 Plugins 页降低环境与版本排错成本。若你已在用或计划用 REA 做逆向辅助分析,可通过目录页或 GitHub 查看说明与更新记录。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye