nightwing-us/mcpyida

GitHub: nightwing-us/mcpyida

MCPyIDA 是一个 MCP 服务器,将 IDA Pro 的逆向分析能力暴露给 LLM 客户端,使大语言模型能够直接驱动二进制反编译、交叉引用、类型恢复和二进制修补等逆向工程操作。

Stars: 4 | Forks: 0

# MCPyIDA 一个将 [IDA Pro](https://hex-rays.com/ida-pro/) 的逆向工程能力提供给 LLM 客户端的 MCP (Model Context Protocol) 服务器。 MCPyIDA 通过 MCP 暴露二进制分析能力:反编译、反汇编、符号查找、交叉引用、类型检查、结构体恢复、二进制修补以及可脚本化分析。 ## 前置条件 - **IDA Pro** 9.x 或更高版本,附带 idalib(已使用 IDA Pro 9.2+ 测试; [下载](https://hex-rays.com/ida-pro/)) - **Python** 3.10–3.12 ## 安装说明 ### 1. 创建虚拟环境(推荐) ``` python3 -m venv idavenv source idavenv/bin/activate ``` ### 2. 安装 MCPyIDA ``` pip install mcpyida ``` ### 3. 将 MCPyIDA 注册为 IDA 插件 ``` mcpyida_install ``` ### 4. 配置 IDA 以使用你的虚拟环境 将 IDA 的 IDAPython 指向同一个虚拟环境。具体步骤取决于你的 IDA Pro 版本和操作系统;有关配置 IDAPython 的 Python 解释器的详细信息,请参阅 [IDA Pro 文档](https://hex-rays.com/products/ida/support/idadoc/)。 ## 快速开始 ### GUI 模式(交互式运行 IDA Pro) 1. 启动 IDA Pro 并打开一个二进制文件。 2. 转到 **Edit → Plugins → MCPyIDA**(或插件添加的 MCP 菜单)。 3. 启动 MCP 服务器。 4. 服务器 URL 将显示在输出窗口中,例如: `http://127.0.0.1:6050/sse/` ### Headless 模式 在没有 IDA GUI 的情况下启动 MCP 服务器(需要 idalib): ``` export IDADIR=/path/to/idapro mcpyida-headless --binary /path/to/firmware.elf ``` 服务器会向 stdout 打印一个 JSON 就绪信号: ``` {"status": "ready", "host": "127.0.0.1", "port": 6050, "binary": "/path/to/firmware.elf"} ``` ### 连接 MCP 客户端 将任何兼容 MCP 的客户端(Claude Desktop、VS Code MCP 扩展等)指向正在运行的服务器: ``` { "mcpServers": { "ida": { "type": "streamable-http", "url": "http://127.0.0.1:6050/mcp" } } } ``` ## 暴露的功能 MCPyIDA 暴露了按类别组织的工具: - **列表与上下文:** 列出入口、检查二进制元数据、解析函数 - **分析:** 反编译、反汇编、交叉引用、控制流图 - **类型:** 类型枚举和详细检查 - **修改:** 重命名符号、更新变量、设置注释、修补指令 - **脚本:** 带有回传至客户端的 RPC 回调的 Python 代码执行 - **搜索:** 二进制模式和指令序列匹配 ## 故障排除 **运行 `mcpyida_install` 后 IDA 未加载插件** 确保你的 IDAPython 解释器指向安装了 `mcpyida` 的虚拟环境。`mcpyida_install` 命令会将插件加载器复制到 IDA 的插件目录中;加载器本身必须在运行时能够 `import mcpyida`。 **`mcpyida-headless` 因 idalib 错误立即退出** 将 `IDADIR` 设置为 IDA Pro 安装目录的根目录(即包含 `idalib.so` / `idalib.dll` 的目录)。检查路径是否正确,以及你的 IDA Pro 许可证是否有效且可访问。 **端口 6050 已被占用** 向 `mcpyida-headless` 传递 `--port `,或者在 GUI 模式下运行时在插件的设置面板中配置端口。 **MCP 客户端报告连接被拒绝** 确认服务器已成功启动(查找 JSON 就绪信号或检查 IDA 的输出窗口)。默认传输协议为 `http://127.0.0.1:6050/mcp` 上的 `streamable-http`;仅支持 SSE 的旧客户端可以连接到 `http://127.0.0.1:6050/sse/`。 ## 开发说明 ### 设置 ``` git clone https://github.com/nightwing-us/mcpyida.git cd mcpyida pip install -e ".[dev]" ``` ### 测试 单元测试(无需 IDA Pro): ``` pytest tests/unit/ -v --tb=short ``` 集成和 e2e 测试需要 IDA Pro / idalib,并且将在具有可用 IDA Pro 许可证的 CI 环境中运行。 ### 类型检查 ``` mypy ``` ### Linting ``` ruff check src tests ruff format src tests ``` ## 相关项目 MCPyIDA 和 MCPyGhidra 作为姐妹项目并行维护,旨在实现功能对等 —— MCPyIDA 针对 IDA Pro,而 MCPyGhidra 针对 Ghidra。 - [MCPyGhidra](https://github.com/nightwing-us/mcpyghidra) — 针对 Ghidra 的同等 MCP 服务器(免费、开源的逆向工程工具) - [pyghidra-decaf](https://github.com/nightwing-us/pyghidra-decaf) — 原生 Python 的 Ghidra 插件开发框架(MCPyGhidra 的底层基础) ## 许可证 Apache-2.0 — 详情请参阅 [LICENSE](LICENSE)。 版权所有 © 2026 Nightwing Group, LLC。
标签:Amass, DLL 劫持, Findomain, IDA Pro, MCP, 二进制分析, 云安全运维, 云资产清单, 大语言模型, 安全规则引擎, 插件, 逆向工具, 逆向工程