前言¶
在 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 倉庫。