dsh-rea-powerpack
Installs and verifies the reverse-engineering engines REA needs on Windows (Ghidra, JADX, apktool, adb, WABT, frida and more), pins the rea-agents MCP server version, and reports capability gaps in a settings card.
Install
dsh plugin --profile web add dsh-rea-powerpack
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-rea-powerpack
把 REA 在 Windows 上做到最强:补齐分析引擎、固定 MCP 版本、体检能力缺口,
并在 DSH 设置里用一张卡片把这一切说清楚。
REA 是逆向分析 MCP 服务器:原生二进制、
托管代码、Electron/JavaScript、固件、浏览器目标都能拆。但它只是适配层——
Ghidra、JADX、WABT、frida 这些引擎得在这台机器上真的能跑。





仓库:<https://github.com/Zhishulo/dsh-rea-powerpack> · npm:<https://www.npmjs.com/package/dsh-rea-powerpack>(源码、issue 与发行版都在这里)
dsh-rea-powerpack 干三件事:
1. 引擎:按矩阵检测 / 安装 / 卸载分析引擎,合成 env 与 PATH 喂给 REA;
2. 版本:把 rea-agents 精确固定,检查新版、影子预检、可回滚;
3. 体检:调用 REA 的 doctor,把「缺什么、为什么缺、怎么修」按 reason 分组列出来。
亮点
- 一张卡片说清全部状态:REA 版本、pin 来源、引擎就绪数、最近体检、更新策略,
以及每个引擎的 tier / 版本 / 状态徽章 / 动作按钮。
- 安装即校验:带 sha256 的引擎强制校验,半装状态不进清单、不进环境变量。
- 用户设置优先:你手动设的
REA_*环境变量永远赢,被保留的变量名会列出来。 - 更新不赌运气:新版本先在影子目录里握手体检(serverInfo 版本 + 工具数 ≥ 200),
通过了才进配置档;进配置档后复检失败自动回滚,坏版本进 withheldBuilds。
- 失败可解释:所有错误走稳定错误码 + 中英双语文案;未知码原样显示,不吞。
- 无构建步骤:浏览器半边是 lazy-CJS(
window.__ModuleLoader__.load),
只用 React + 内联样式,配色跟随宿主主题变量。
装好之后,REA 变成什么样(本机实测)
数字来自本机握手探针(dev/verify-mcp.mjs → dev/.v2.json,REA 6.8.0,
Java 25 + Ghidra 12.1.4 + 托管引擎就位):
指标 · 实测值 · 说明
MCP 工具总数 · 229 · 装引擎不改变工具清单,改变的是「哪些组真的能用」
可用工具组 · 50 / 76 · 剩余 26 组:11 组要先 open_binary(target_required)、13 组本平台不支持(unsupported_host)、2 组缺 JEB(provider_missing)
可用组内工具 · 142 · doctor 的 toolsInAvailableGroups
引擎就绪 · 13 / 13 · 矩阵 21 行:13 项 Windows 可用(全部 verified),另 8 项 REA 本身不支持 Windows
握手耗时 · 约 0.5 s · initialize + 分页 tools/list
无引擎基线(同一台机器、未注入任何 REA_*,裸启动 REA):
42 / 77 组可用,按 reason 分布 target_required 11 / unsupported_host 13 /
provider_unavailable 7 / provider_missing 4。注入托管引擎后:
provider_unavailable 7 → 0,provider_missing 4 → 2(只剩 JEB,商业软件不预装)。
组数 77 → 76 是 JEB 相关两个组在注入后合并了一组,工具总数始终是 229。
复现基线:
REA_POWERPACK_HOME=/tmp/rea-empty node dev/verify-mcp.mjs --launcher "<repo>/lib/rea-mcp.mjs" --list-tools # 空目录 = 不注入任何引擎
产物见 [dev/BASELINES.md](dev/BASELINES.md)(两组基线:42/77 与 50/76,附复现命令)与
dev/baseline-no-engines.json(含命令、时间戳与完整 unavailable 列表)。
dev/ 只随本仓库分发、不进 npm 包,复现命令在 clone 出来的仓库根目录执行。
一句话:powerpack 不扩充 REA 的能力清单,而是让清单里"本该能用"的组真的可用:
引擎类 provider 缺口由矩阵补齐;剩下的缺口被逐条解释成「先开目标 / 本平台不支持 /
缺某个 provider」,而不是一句"工具不可用"。JEB 不在引擎矩阵内,需要自备 JEB 客户端。
安装
要求 Node >= 22.19.0(REA 自身要求),DSH 桌面版 / web / tui 均可。
发布状态:已发布到 npm —— <https://www.npmjs.com/package/dsh-rea-powerpack>
(首版0.1.3,当前0.1.4)。
npm 安装(推荐)
桌面版:设置 → 插件 → 添加,来源填包名 dsh-rea-powerpack。
web / tui:
dsh plugin --profile web add dsh-rea-powerpack dsh plugin --profile web ls
Desktop 的 profile 由 Electron 独占管理,dsh plugin --profile desktop 会被拒绝 ——
这是 DSH 的硬约束,桌面用户请走上面的 UI。
从源码安装(开发者 / 想改代码)
junction 装法:改仓库里的代码不用重装,刷新即生效。
git clone https://github.com/Zhishulo/dsh-rea-powerpack.git cd dsh-rea-powerpack node dev/install-plugin.mjs --repo . --dry-run # 先看它准备改什么 node dev/install-plugin.mjs --repo . # 真正安装
git clone若报schannel: failed to receive handshake,是本地代理/网络抖动,
重试 2–3 次即可,与本仓库无关。
桌面版也可以走 UI:侧栏 插件 → 添加,来源填刚 clone 下来的目录(file:<绝对路径>)。
dev/install-plugin.mjs 只做四件事(--profile <dir> 覆盖默认的
~/.dsh/profiles/desktop,--uninstall 反向执行):
1. 备份 profile 的 package.json / cordis.patch.yml / pnpm-lock.yaml 到
<profile>/.rea-powerpack-backup/<时间戳>/;
2. 在 profile 里 pnpm add "link:<repo>" --save-exact(junction 安装:改仓库代码不用重装);
3. 把 dsh-rea-powerpack 写进 dsh.profile.bundles,并把旧的 dsh-rea-agents 从 bundles 移除
(两个 bundle 都会挂一行名为 rea 的 MCP client,同时开会撞车);
4. 清掉 profile cordis.patch.yml 里残留的 - id: rea-agents* 行(原文件留在备份里)。
装完重启 DSH:bundle 列表与 patch 层在 boot 时一次性合成。
插件向配置注入两行:dsh-rea-powerpack(卡片宿主)与 rea-powerpack-mcp(名为 rea 的 MCP 服务,
所以工具仍是 mcp__rea__*)。
插件不安装分析引擎以外的任何东西,也不会改写你的全局环境变量或注册表。
首次配置
1. 打开卡片:设置 → 插件 → REA 强化 tab。
2. 装 REA 本体:卡片会显示「未安装」;点「安装」按当前 registry 最新版精确定装
(pnpm add rea-agents@x.y.z --save-exact)。
3. 装引擎:概览会告诉你「引擎就绪数 x/y」。先在矩阵里装 tier 0/1
(Java、Ghidra → adb、apktool、jadx、wabt、python、frida)。
依赖顺序见 [docs/ENGINES.md](docs/ENGINES.md#5-安装顺序与依赖)。
4. 跑一次体检:「能力体检 → 运行体检」,确认 REA 实际暴露的工具数(正常 ≥ 200)。
5. 选更新策略:默认 notify(只提示)。想随时跟进可改 auto-idle。
状态目录与引擎目录
状态目录默认 %LOCALAPPDATA%\rea-powerpack(REA_POWERPACK_HOME 可覆盖),
卡片里的「维护」区会显示当前真实路径:
文件 · 内容
engines.json · 引擎清单:每个引擎的 path/version/verified,以及 root
settings.json · updatePolicy、engineRoot、toolTimeoutMs、checkIntervalHours、locale
pin.json · 当前固定的 REA 版本、pin 来源、可回滚的上一版、被拒版本 withheldBuilds
state.json · 最近一次体检与最近一次热重载的结果(卡片"最近体检时间"读它)
logs/powerpack.log · JSONL 日志:每次安装/校验/升级/回滚/重载一条
引擎默认装在 ...\rea-powerpack\engines\<id>\;在设置里改 engineRoot 可换盘。
移动或删除引擎目录后,点一次「全部校验」,卡片会把对应行标成 missing,
不会继续引用一个不存在的路径。
引擎矩阵
id · 名称 · tier · 环境变量 · 安装
java · Java (JDK) · 0 · JAVA_HOME · 手动(外部)
ghidra · Ghidra · 0 · GHIDRA_INSTALL_DIR · 手动(外部)
adb · Android Platform Tools · 1 · REA_ADB_PATH · 托管 zip
apktool · Apktool · 1 · REA_APKTOOL_COMMAND · 托管 github-latest
jadx · JADX headless MCP · 1 · REA_JADX_MCP_JAR · 托管 file(sha256)
wabt · WABT · 1 · REA_WABT_BIN_DIRECTORY · 托管 zip
python · Python 3.12 · 1 · PATH · 托管 winget
frida · Frida tools · 1 · PATH · 托管 pip
objdump · GNU objdump · 2 · REA_OBJDUMP_COMMAND · 手动(
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::3,最后更新 2026-10-27