dsh-ghidra
Ghidra bridge plugin for DeepSeek Harness (DSH): 218 reverse-engineering tools — import binaries, decompile, xrefs, search, script Ghidra, plus the full upstream GhidraMCP REST surface, served from a single Ghidra JVM. Ships an agent skill and only advertises the tools that can actually run right now. 适合需要进行二进制导入、反编译和逆向分析的安全研究人员。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:spix18/dsh-ghidra配置(可选 · 可热改)
11 个字段全部 volatile:在 DSH 的 插件管理页(侧边栏「插件」→ Ghidra 桥)的卡片表单里 直接改,保存后立即生效,无需重启 DSH(写侧 reload Loader entry 重跑 apply)。也可以走 cordis patch:
- id: ghidra-bridge
name: dsh-ghidra
config:
ghidraHome: '' # 留空即用插件数据根里的安装(node_modules\dsh-ghidra-home\ghidra),外部安装仅作回退
ghidraProjectDir: '' # 项目缓存目录(缺省 %TEMP%\dsh-ghidra-projects;**不能**放 .dsh 下——Ghidra 拒绝点元素路径)
projectName: dsh
pythonVer: '3.13'
analysisTimeoutSec: 600
serverStartupTimeoutMs: 180000
maxOutputChars: 100000
stream: true # ghidra_open 默认后台流式
mcpPort: 8123 # 上游 GhidraMCP headless 服务器端口
mcpStartupTimeoutSec: 180
mcpTimeoutSec: 900
Settings 分区(状态 + 配置 + 健康检查 + 下载)
双面插件:浏览器半(client.js,plain JS + React,无打包)注册 settings.section slot
(与 dsh-mobilecode 等插件同位),渲染进 设置 → Ghidra 顶级分区:
- 状态区:PyGhidra 桥与 GhidraMCP 服务器的运行态(端口 / 程序 / pid)、工具计数
(原生 + lifecycle + 生成)、Ghidra 主目录与版本;「刷新」「停止 MCP 服务器」
(优雅停止,先保存已加载程序再退出)「Download Ghidra」按钮。数据来自节点半注册的
GET /api/dsh-ghidra/status(回环-only,headless profile 无 webServer 时显示"配置表单不可用")。 - 健康检查(Doctor):「Run doctor」按钮 →
GET /api/dsh-ghidra/doctor, 逐项检查 Ghidra 主目录 / PyGhidra launcher 脚本 / ghidraMCPHeadless.bat / Python(py -3.13 --version)/ 双服务器运行态 / Ghidra 版本,每项 OK/FAIL + 详情; 前置 4 项全过才 overall 通过,运行态为参考项。 - 下载安装:「Download Ghidra」→
POST /api/dsh-ghidra/install-ghidra(后台): GitHub 最新 release(ghidra_*_PUBLIC_*.zip)流式下载(进度 % + MB)→ PowerShellExpand-Archive解压到当前主目录旁 → 校验support/ghidraMCPHeadless.bat→ 自动把 ghidraHome 切到新目录(走迁移流程删旧目录)。进度在 /status 的install字段。 - 配置区:12 字段表单(staged edits → 保存逐条写 + 读回 Host 验收;已覆盖字段带徽标 +
单字段「重置」恢复默认;实时校验)。走
ctx.configForms.get('ghidra-bridge')的 FormScope。 路径字段带「Browse…」按钮:打开插件自己的文件夹浏览器(模态:驱动器列表 → 逐层进入 → 「Use this folder」写回 draft,另有「Create folder」就地建目录)。选择器由本 UI 渲染,不弹原生 对话框 —— 宿主进程弹的 PowerShell/WinForms 对话框在无交互 window station 的环境里不可见 (表现为「点了没反应」且请求一直挂着),所以宿主只提供两个确定性接口:POST /api/dsh-ghidra/list-dir(只读列目录;空路径回驱动器列表;回 dotSegment 供前端预警)与POST /api/dsh-ghidra/mkdir(建目录;拒绝分隔符与点开头的名字)。 ghidraHome 变更保存时自动迁移:POST /api/dsh-ghidra/migrate-home(后台)—— 停双服务器 → 旧 home 复制到新目录 → 校验结构(launcher + bat)→ 删除旧 home; 校验不过则保留旧 home 不删。目标已存在且是完整 Ghidra home(含 bat)时按版本切换处理 (不复制,只删旧);目标是非空且非 Ghidra 目录时拒绝。
需要 DSH 重启一次让浏览器半加载(client.js 由 /plugins/dsh-ghidra/client.js serve);
此后节点半的配置改动即时生效,浏览器半刷新即可看到。