Claude-Reverser/IDA-instances-MCP
Custom build of ida-pro-mcp - stability-hardened MCP server for hosting headless IDA Pro instances
IDA-Instances-MCP – 為 IDA Pro 構建的穩定多實例 MCP 伺服器
是什麼
- ida-pro-mcp 的自訂分支,運行一個 Model-Context-Protocol (MCP) 伺服器,允許 AI 工具(Claude Code、Cursor、VS Code 延伸模組等)以程式化方式控制 IDA Pro。
- 新增「headless-instances」層,讓多個 IDA 工作者可並行執行,每個皆擁有獨立的隔離資料庫,全部透過單一 HTTP(或 stdio)端點存取。
相較於上游的主要改進
| 領域 | 改進 |
|---|---|
| 數據安全 | 不會刪除屬於其他活躍會話的 .id0/.id1/.id2/.nam/.til 檔案。 |
| 保存可靠性 | idb_save 獲得 10 分鐘預算;保存失敗不再丟棄變更。 |
| 並發性 | 監督器鎖不再於工作進程啟動或清理時阻塞整個伺服器。 |
| 健壯性 | 錯誤的 JSON-RPC 現在返回正確的錯誤碼,而非崩潰。 |
| 超時 | 代理超時提升至 15 分鐘(可設定),以確保長時間反編譯完成。 |
| 網路 | 處理端口競爭,鎖定 SSE 寫入,快取 CORS 讀取。 |
| 資源限制 | 跟蹤日誌上限為 64 MiB,過大的參數/結果被截斷,失敗佇列有界。 |
| 認證 | 每個 HTTP 請求必須提供一次性生成的 API 金鑰(GET /key)。 |
| 管理端點 | /health、/sessions、/upload(二進位上傳,大小受限)。 |
| 空閒回收 | 空閒時間超過 IDA_MCP_IDLE_TIMEOUT 分鐘的會話將自動儲存並關閉。 |
| 優雅關閉 | 收到 SIGTERM/SIGINT 信號時,所有開啟的資料庫都會被儲存。 |
| 自動更新 | 啟動時檢查 GitHub 發布版本,可透過按鍵自動更新。 |
| 預設設定 | 監聽 0.0.0.0:9999;GUI 插件也綁定至 0.0.0.0 並使用相同的 API 金鑰。 |
如何運作
- 監督器(
idalib-mcp)作為輕量級 HTTP 伺服器執行。它為每個開啟的 IDB 啟動一個獨立的 工作進程,每個進程以無頭模式載入 IDA 的idalib。 - 客戶端透過 HTTP(或 stdio)使用 MCP(JSON-RPC)通訊。監督器將呼叫轉發給對應的工作進程,強制執行超時,並回傳結果。
- 啟動時產生的 API 金鑰保護所有端點;金鑰儲存在
~/.idapro/mcp/api_key,重啟後仍保留。
典型工作流程
# 1️⃣ 激活 IDA 的 Python 環境(推薦使用 uv 作為套件管理器)
uv run "/opt/idapro-9.x/idalib/python/py-activate-idalib.py"
# 2️⃣ 啟動無頭 MCP 伺服器(預設綁定 0.0.0.0:9999)
uv run idalib-mcp
# 3️⃣ 取得一次性 API 金鑰
KEY=$(curl -s http://host:9999/key | jq -r .key)
# 4️⃣ 上傳二進位檔進行分析
curl -H "Authorization: Bearer $KEY" \
--data-binary @sample.elf \
"http://host:9999/upload?filename=sample.elf"
# 5️⃣ 使用相同金鑰將 MCP 兼容客戶端(如 Claude Code)指向伺服器。
執行互動式 GUI 代理
- 在 IDA 內安裝 MCP 插件(
Edit → Plugins → MCP)。 - 從終端執行:
uv run ida-pro-mcp(stdio)或uv run ida-pro-mcp --transport http://127.0.0.1:9999,在使用完整 IDA UI 時暴露相同的 HTTP API。
設定(環境變數、命令列標誌)
IDA_MCP_MAX_WORKERS– 最大並行 IDA 實例數(預設 4,0 表示無限制)。IDA_MCP_IDLE_TIMEOUT– 會話自動關閉前的空閒分鐘數(預設 60)。IDA_MCP_PROXY_TIMEOUT– GUI 代理至工作進程的呼叫超時(預設 900 秒)。IDA_MCP_API_KEY/IDA_MCP_API_KEY_FILE– 注入預先產生的金鑰。- 其他各種選項控制開啟時間限制、上傳大小上限、健康探測預算等。
使用場景
- AI 輔助逆向工程:讓 Claude Code、Cursor 或其他基於 LLM 的代理在無人值守 UI 的情況下執行 IDA 分析(反編譯、符號重命名、CFG 提取)。
- 批量分析農場:在伺服器上啟動數十個無頭 IDA 工作進程,每個處理一個獨立的二進位檔,全部透過 MCP 協調。
- CI/CD 安全掃描:將伺服器整合至流水線中,自動上傳二進位檔,在 IDA 內執行靜態分析工具,並取得結果。
測試
倉儲附帶 ida-mcp-test 輔助工具;範例展示如何對不同分析類別的樣本 ELF 二進位檔執行測試。
授權
- MIT(繼承自上游
ida-pro-mcp)。 - 需要 有效的商業 IDA Pro 授權;免費版不支援。
本摘要僅基於倉儲的 README。
相關
- 專案
- 專案
- 專案
- 專案