前言¶
在 DeepSeek Harness(DSH)里做逆向相关任务时,常见做法是单独起一个 MCP 服务、再在宿主里手工对接工具名和 schema。REA(morluto/rea,npm 包 rea-agents)本身已经提供完整的逆向 MCP 工具面,但把 207 个工具的 input schema 全部塞进每轮请求的 Agent 工具表,常驻体积大约 194 KB(资料中约合 4.9 万 token),很容易挤占上下文。下面介绍社区插件 dsh-rea(维护者 xiaobaga281,分类:工作流):它把 REA 的工具表注册进 DSH,并用宿主原生的延迟加载把常驻开销压到约 1.4 KB,同时附带运行时解包、环境侧栏和若干治理类辅助工具。
这是什么¶
dsh-rea 是 REA 的 DSH 插件(当前版本 1.3.1,MIT 许可,需 Node.js ≥ 18)。插件不重新发明逆向能力,而是桥接 rea mcp 子进程:工具在 Agent 侧公开名为 mcp__rea__<tool>,输入 schema 与 REA 一致;REA 增删工具时会自动重新同步。插件目录页:SkillHub · xiaobaga281/dsh-rea;源码与说明:GitHub · xiaobaga281/dsh-rea。
核心功能¶
207 个 REA 工具与延迟加载¶
插件注册 REA MCP 服务器的完整工具表。默认配置下,207 个工具的 schema 标记为 deferLoading,不进入请求体;模型真正调用某个工具时才加载对应 schema。资料中的对比:deferCatalog: true(默认)常驻约 1.4 KB(341 token);若设为 false 则恢复全量广告,约 194 KB(48 560 token)。工具数量不变,仍可按名调用。
插件刻意不把 207 个入口合并成单一 rea_run(tool, input):REA 按「一工具一职责 + 严格输入契约」设计,合并会改变模型从 schema 读取参数结构的方式;延迟加载走的是 DSH 到 DeepSeek defer_loading 的原生链路,而不是插件侧 hack。
检索与状态类辅助工具¶
因 schema 延迟加载,模型无法直接从工具表浏览全部 REA 工具,插件提供常驻索引:
rea_catalog:几百字节的常驻工具;无参调用列出全部 207 个精确工具名(约 6.9 KB);带关键词时在名字/描述中搜索,输出里每一行已是可直接调用的mcp__rea__*全名。rea_doctor:运行 REA 的mcp doctor --json,报告 MCP 子进程能否启动、服务端状态与可用分析引擎;只读,不打开分析目标。rea_status:一次调用说明是否已打开目标、绑定的 provider、哪些引擎就绪、因此当前能做什么;207 个工具中有 55 个依赖「当前文档」,无目标时在 headless 下容易空转,先看状态比直接撞工具便宜。
技能与运行时¶
- 技能:将 REA 自带的
reverse-engineer-anything技能及references/安装到~/.dsh/skills/reverse-engineer-anything/,按 REA 版本打戳,版本未变则不重复拷贝。 - 运行时:
rea-agents6.7.0 与完整依赖闭包(136 个包)打包为vendor/rea-runtime.tgz(28 MB,带 SHA-256)。首次启用时原子解包到~/.dsh/rea-runtime/,之后 MCP 用宿主 Node 以绝对路径运行,调用时不经 npm/npx、不需要网络。解包失败会保留上一版运行时,避免出现「半解包、207 工具全挂」的状态。资料中 1.0.3 全量回归:缺依赖包为 0;冷启动握手约 13 s,之后约 2.4 s(1.1.0 复测)。
环境侧栏与本机引擎¶
插件本体约 28 MB,不捆绑 Ghidra。侧栏展示 Java/JDK、Ghidra、JADX、Apktool、WABT、Kuna/Rizin 等实际状态,可保存绝对路径,并对 Ghidra/JADX/Apktool/WABT 提供按需准备与进度。资料中的固定版本与方式摘要:
| 引擎 | 版本 | 准备方式 |
|---|---|---|
| Ghidra | 12.1.4 | 侧栏一键下载(约 543 MiB),校验后解包到 ~/.dsh/rea-engines/ghidra/ |
| JADX | 0.7.1(headless MCP jar) | 侧栏一键下载 |
| Apktool | 3.0.3 | 侧栏下载 jar 并生成启动器 |
| WABT | 1.0.42 | 仅 Windows x64 有固定版本;其他平台需手填路径 |
| Kuna/Rizin | 用户提供 | 只接受绝对路径 |
| IDA / Hopper / JEB | 商业授权 | 只接受路径 |
Java 探测会枚举常见安装位置;只有带 javac 的完整 JDK 才算就绪(Ghidra 不能在 JRE 上跑)。
大结果落盘、静态初筛与证据导出¶
- 结果落盘:单次结果超过
maxResultChars(默认 24 000 字符)时写入~/.dsh/rea-artifacts/<会话>/,返回摘要与路径,可用rea_read_artifact分页读取。 rea_triage(path):纯本地、不执行样本;熵、PE/ELF/Mach-O 异常、壳/混淆签名、字符串与 XOR 探测、可选 YARA 等,输出带证据的判定与下一步建议(读取上限由triageMaxBytes控制,默认 64 MB)。rea_export_report:将 Evidence bundle 转为 Markdown 与 SARIF 2.1.0。- 产物治理:默认保留 7 天并有容量上限;
sensitiveArtifacts开启时超大结果只回摘要、不落盘;rea_purge_artifacts可手动清理。
安全与审计(1.3.0 起)¶
变更留痕采用 fail-closed:207 个工具中 41 个默认审计、162 个只读;会删改设备的 4 类操作默认关闭,需配置 allowDeviceMutations: true。反编译/重建类结果强制标注「推断,非源码」;写操作结果标注「已审计」。子进程不继承宿主完整环境变量,工作目录固定为 ~/.dsh/rea-workspace;侧栏改路径、触发下载等 POST 路由有同源与 JSON 等约束(详见 README「安全边界」)。
版本更新¶
侧栏可检查 GitHub 最新 Release 并一键安装;下载走多层镜像,失败自动切换,按 Release 公布的 SHA-256 校验;可用 pinnedSha256 钉死摘要。代理读取 HTTPS_PROXY / HTTP_PROXY(含 NO_PROXY)。
安装与启用¶
DSH 生态里插件通常通过社区目录或对话安装,而非固定的一条 git clone。SkillHub 目录页提供「发送给 DeepSeek Harness 安装」说明,核心意图是让 Harness 安装插件 xiaobaga281/dsh-rea(页面文案以目录站当时展示为准,安装前请在 目录页 复制完整提示,勿自行拼接未在文档出现的 CLI)。
启用后插件默认 enabled: true;首次使用会解包 REA 运行时到 ~/.dsh/rea-runtime/。配置写在 cordis.patch.yml 的 config 段,常用项包括:
deferCatalog: true # 默认延迟 207 个 REA 工具 schema
maxResultChars: 24000 # 超限结果落盘
allowDeviceMutations: false
allowedTargets: [] # 非空时会话内绝对路径必须落在这些根下
artifactRetentionDays: 7
toolCallTimeoutMs: 900000 # Ghidra/Hopper 首次启动可能较久
完整键名与默认值见仓库 README 的配置表(如 schemaProfile、sensitiveArtifacts、yaraRulesDir 等)。
典型用法¶
经过上面的步骤,在 Agent 对话中可以按「先状态、再索引、再调 REA 工具」的顺序操作:
- 调用
rea_status,确认是否已打开目标、哪些引擎可用。 - 调用
rea_doctor,确认 MCP 子进程与健康检查通过。 - 用
rea_catalog检索工具名(例如关键词javascript;资料示例命中 22 个),从输出复制mcp__rea__*全名再调用对应工具。 - 对未知样本先做
rea_triage,再决定是否打开 Ghidra/JADX 等深度分析。 - 若某次工具返回提示路径,用
rea_read_artifact分页读落盘内容;需要归档时用rea_export_report。
侧栏中可填写引擎绝对路径,或对 Ghidra/JADX/Apktool 使用「准备」按钮;WABT 在非 Windows x64 上需手填路径。
适用场景与注意¶
适合谁:已在 DSH 里用 Agent 做移动/二进制/多语言逆向,希望复用 REA 207 工具面,又需要控制上下文 token、本机引擎一键准备与结果落盘治理的开发者。
务必注意:
- 插件以当前 DSH 进程权限运行;逆向工具可能读写你指定的样本路径、调用本机 Ghidra/Java 等,安装前应阅读 源码 与 MIT 许可证,并理解 README 中的安全边界。
- REA 与 Ghidra/JADX 等各自许可证归原项目;商业引擎(IDA/Hopper/JEB)仅路径配置,不提供自动安装。
- SkillHub 为独立社区目录,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库 Release 为准(目录页标注 v1.3.1)。
结尾¶
dsh-rea 把 REA 的逆向 MCP 工具表接进 DSH,用延迟加载把常驻 schema 从约 194 KB 降到约 1.4 KB,并补齐 rea_catalog 索引、运行时原子解包、环境侧栏、doctor/status/triage 与产物治理。若要安装或查看更新说明,可访问 SkillHub 目录页 与 GitHub 仓库。