前言¶
在 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,页面分三块:
- Setup check:检查 REA CLI 及版本(需 6.3.0+)、
mcp__rea__*是否已加载、可选的 Ghidra、以及 Ghidra 所需的 Java;缺项会说明原因并给出可复制命令,Check again 可重跑。 - Try it:可粘贴到对话中的示例提示。
- 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 子进程加载新二进制。
典型用法¶
- 安装并全局安装 REA 后,在 Plugins 页完成 Setup check,确认 REA CLI 与
mcp__rea__*为绿色。 - 需要分析原生程序时,在 Settings 填写
ghidraInstallDir或设置环境变量GHIDRA_INSTALL_DIR。 - 在对话中直接说明任务。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 查看说明与更新记录。