Skip to main content
Glama
Xilin3

ida-pro-mcp-dsh

by Xilin3
README.md
# ida-pro-mcp-dsh

[ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp) 的 **DeepSeek Harness 适配层**。

一键把 mrexodia/ida-pro-mcp 的 **headless idalib MCP server** 挂进 DSH,模型直接拿到
66 个 `mcp__idalib__*` 逆向工具(`decompile` / `disasm` / `xrefs_to` / `idb_open` /
`survey_binary` / `find_bytes` / …),纯无头 idalib 驱动,无需 IDA GUI。

> **这不是 ida-pro-mcp 的分叉,也不包含其代码。** 本仓库只提供 DSH 侧接线
> (一个 `cordis.patch.yml`)。实际 MCP server 来自上游仓库,经 `pip install` 安装。

## 安装

```bash
dsh plugin --profile web add "github:Xilin3/ida-pro-mcp-dsh#main"
```

重启 `dsh web` 后生效。模型将看到 `mcp__idalib__*` 系列工具。

## 依赖(先装上游)

```bash
pip install "https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip"
```

并激活 idalib(让 Python 能找到 IDA 的 `idalib.dll`):

```bash
# Windows:推荐直接设 IDADIR 指向 IDA 安装目录(最高优先级,见下方「自定义」)
# 或运行 IDA 自带的激活脚本,把安装目录写进 ida-config.json:
uv run "C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py"
```

- Python ≥ 3.11
- IDA Pro 8.3+(9 推荐),**IDA Free 不支持**
- `idalib-mcp` 需在 PATH 上(pip 安装后位于 Python 的 `Scripts` 目录)

## 使用

每个工具都要带 `database` 参数(`idb_open` 返回的 session id):

```text
mcp__idalib__idb_open("/path/to/binary.exe", preferred_session_id="xxx")
mcp__idalib__survey_binary(database="xxx")          # 开图第一步:段/入口/字符串/函数总览
mcp__idalib__decompile("main", database="xxx")
mcp__idalib__xrefs_to("ImportantExport", database="xxx")
```

也可以启动时直接带二进制:把 `args` 改成 `['--stdio', '/path/to/binary']`。

## 自定义

本 bundle 的配置行 id 为 `mcp-idalib`,默认 `command: idalib-mcp`。要指定本地
`idalib-mcp` 路径或 IDA 安装目录,在 profile 的 `cordis.patch.yml` 用户层覆盖
(Cordis patch 语义:同 id 最后写入者胜):

```yaml
- insert:
    - id: mcp-idalib
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: idalib
        transport: stdio
        command: 'C:\Users\<you>\AppData\Local\Programs\Python\Python312\Scripts\idalib-mcp.exe'
        args:
          - '--stdio'
        env:
          PYTHONUTF8: '1'
          IDADIR: 'D:\IDA Professional 9.3'   # 指向 IDA 安装目录,最高优先级
        toolCallTimeoutMs: 600000
```

`IDADIR` 会被上游 `idapro` 包最高优先级读取,直接定位 `idalib.dll`,绕开
DSH MCP client 对环境的清洗(scrubbed env)。

## 卸载

在 DSH 的 Settings → Plugins 管理面板移除本 bundle,或从 profile `package.json` 的
`dsh.profile.bundles` 删除对应行后重启。

## 归属 / License

- **上游**:[mrexodia/ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp),MIT
  © 2025 Duncan Ogilvie 及贡献者。
- **本适配层**:MIT,仅含 DSH 接线(`cordis.patch.yml`)与文档,不含上游代码。
- 详见 [LICENSE](LICENSE)。