dsh-rea:在 DeepSeek Harness 中延遲掛載 REA 逆向工具表

前言

在 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-agents 6.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 工具」的順序操作:

  1. 調用 rea_status,確認是否已打開目標、哪些引擎可用。
  2. 調用 rea_doctor,確認 MCP 子進程與健康檢查通過。
  3. 用 rea_catalog 檢索工具名(例如關鍵詞 javascript;資料示例命中 22 個),從輸出複製 mcp__rea__* 全名再調用對應工具。
  4. 對未知樣本先做 rea_triage,再決定是否打開 Ghidra/JADX 等深度分析。
  5. 若某次工具返回提示路徑,用 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 倉庫。

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

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

小夜