IDA Pro MCP多功能
📌 基于:本项目基于 网络/ida-pro-mcp,通过多实例支持和漏洞扫描功能对其进行扩展。
一个强大的 MCP服务器 IDA Pro中的人工智能辅助逆向工程,支持同时分析多个二进制文件。
为什么是这个项目?
原版 ida亲mcp 是人工智能辅助逆向工程的优秀工具,但我们在现实世界中遇到了局限性:
问题1:单实例限制
当对复杂软件进行逆向工程时,您通常需要分析多个相关的二进制文件:
- 主可执行文件(
main.exe) - 多个DLL/共享库(
helper.dll,crypto.dll等等) - 第三方图书馆
原始项目仅支持 一次一个IDA实例,使交叉二元分析变得乏味且低效。
问题2:没有内置漏洞检测
安全研究人员需要快速识别潜在的危险代码模式。手动搜索易受攻击的函数调用很耗时。
新功能
🔗 多实例支持
使用Gateway架构同时分析多个二进制文件:
AI Client ──MCP──> Gateway (port 13337) ──> IDA Instance 1 (main.exe, port 13338)
──> IDA Instance 2 (helper.dll, port 13339)
──> IDA Instance 3 (crypto.dll, port 13340)工作原理:
- 第一个IDA实例会自动启动 网关服务器 (端口13337)
- 每个后续IDA实例都向网关注册并获得一个唯一的端口
- AI客户端连接到网关,网关将请求路由到适当的实例
实例管理工具:
| 工具 | 说明 |
|---|---|
list_instances() | 列出所有已注册的IDA实例 |
switch_instance(target) | 切换默认目标实例(按ID或二进制名称) |
get_current_instance() | 获取当前默认实例的相关信息 |
check_instance_health(target) | 检查实例是否正在响应 |
open_library(name) | 在新IDA实例中自动搜索并打开库文件 |
自动打开库:
在分析使用外部库的程序时,您可以要求AI自动打开它们:
- 在当前目录和子目录中搜索库文件
- 自动检测体系结构(x86/x64/ARM)
- 在IDA Pro中打开自动分析(无对话框)
- 加载后MCP插件自动启动
针对特定实例:
大多数工具都接受可选 target 参数:
{
"method": "decompile",
"params": {
"addr": "0x401000",
"target": "helper.dll"
}
}传统模式:
要禁用多实例支持,请执行以下操作:
IDA_MCP_LEGACY=1🔍 漏洞扫描
全面的漏洞扫描,通过高级检测识别潜在危险的函数调用:
工具:
| 工具 | 说明 |
|---|---|
vuln_scan(output_dir, categories, min_risk) | 扫描二进制文件以查找漏洞,返回摘要 |
vuln_scan_details(category, limit, offset, risk_level) | 获取特定类别的详细调查结果 |
vuln_scan_function(addr) | 扫描特定函数以查找漏洞模式 |
vuln_categories() | 列出所有漏洞类别和相关功能 |
支持的漏洞类别(11类,150多个危险功能):
| 类别 | 危险功能 | 描述 |
|---|---|---|
| 格式化字串 | printf、sprintf、scanf、snprintf、syslog等。 | 非恒定格式字符串,%s没有宽度限制 |
| 缓冲区溢出 | strcpy、memcpy、get、recv、fread等。 | 无边界副本,大小可控,扫描中为%s |
| 命令注入 | 系统、popen、exec\*、CreateProcess、ShellExecute等。 | 非恒定命令 |
| 整数溢出 | malloc、calloc、realloc、alloca、VirtualAlloc等。 | 可能溢出大小 |
| 免费后使用 | 免费、删除、HeapFree、VirtualFree等。 | 潜在UAF/双自由 |
| 路径遍历 | fopen、open、CreateFile、CopyFile等。 | 可控路径 |
| SQL注入 | sqlite3exec、mysql_query、PQexec等。 | 非常量SQL查询 |
| 未经检查的退货 | malloc、setuid、setgid、chdir等。 | 缺少返回值检查 |
| 竞态条件 | 访问、统计、lstat等。 | TOCTU漏洞 |
| 信息泄露 | 写、发送、发送到、fwrite等。 | 可能泄露数据 |
| 签名比较 | strncmp、memcmp、memchr等。 | 带符号比较的大小参数 |
检测特点:
- 格式字符串分析:检查非恒定格式字符串和危险
%s没有宽度限制的说明符 - strlen检查:检测是否
strlen()在无限制复制操作之前调用 - 返回值检查:验证malloc/setuid/等返回值是否正确验证
- MSVC安全功能:手柄
_s后缀变体(strcpy_s、sprintfs等) - glibc强化函数:手柄
_chk后缀变体(\_\_printf_chk、\_\_memcpy_chk等) - 风险评估:基于参数可控性的高/中/低/信息
工作流程:
- 要求AI“扫描漏洞”
- AI呼叫
vuln_scan()按类别和风险级别获取摘要 - 查看摘要并选择类别进行深入分析
- AI使用
vuln_scan_details(category)和decompile()分析具体发现
注: 详细结果保存到 .ida-mcp-vuln/ 文件夹,以尽量减少令牌使用。
先决条件
- IDA Pro (8.3或更高,推荐9)
- 任何兼容MCP的客户端(Claude、Cursor、VS Code、Roo Code等)
安装
适用于已安装原始ida pro mcp的用户
如果您之前安装了原始版本 ida亲mcp,您需要先卸载它,然后强制重新安装:
# Uninstall old versions
"D:\your\path\to\ida\python311\python.exe" -m pip uninstall -y ida-pro-mcp ida-pro-mcp-multi
# Force reinstall the new version
"D:\your\path\to\ida\python311\python.exe" -m pip install --no-cache-dir --force-reinstall --upgrade git+https://github.com/QYmag1c/ida-pro-mcp-multi
# Reinstall IDA plugin and configure MCP clients
"D:\your\path\to\ida\python311\Scripts\ida-pro-mcp.exe" --install
# View MCP configuration
"D:\your\path\to\ida\python311\Scripts\ida-pro-mcp.exe" --config然后重新启动IDA Pro和MCP客户端。
______________________________________________________________________
新安装
步骤1:安装MCP包
在IDA的Python目录中打开一个终端并运行:
# Navigate to IDA's Python directory
cd "D:\your\path\to\ida\python311"
# Install the MCP package
python.exe -m pip install --upgrade git+https://github.com/QYmag1c/ida-pro-mcp-multi步骤2:安装IDA插件并配置MCP客户端
# Install IDA plugin and configure MCP clients
"D:\your\path\to\ida\python311\Scripts\ida-pro-mcp.exe" --install
# View MCP configuration for manual setup
"D:\your\path\to\ida\python311\Scripts\ida-pro-mcp.exe" --config注: 替换 D:\your\path\to\ida 使用您的实际IDA Pro安装路径。
步骤3:重新启动
重要:完全重新启动IDA Pro和MCP客户端以使安装生效。
验证安装
- 打开IDA Pro并加载二进制文件
- 首选 Edit → 插件→ MCP (或按
Ctrl+Alt+M) - 你应该看看
[MCP] Server started在输出窗口中
建筑
src/ida_pro_mcp/
├── server.py # MCP server + instance management tools
├── gateway.py # Gateway Server for multi-instance routing
├── ida_mcp.py # IDA plugin loader (registers with Gateway)
└── ida_mcp/
├── api_core.py # Core functions (decompile, disasm, etc.)
├── api_analysis.py # Analysis operations
├── api_vuln.py # Vulnerability scanning (NEW)
├── api_memory.py # Memory operations
├── api_types.py # Type operations
├── api_modify.py # Modification operations
├── api_stack.py # Stack frame operations
├── api_debug.py # Debugger operations
└── ...所有可用工具
该项目包括原始项目中的所有工具,以及新的多实例和漏洞扫描功能。
实例管理(新)
list_instances(),switch_instance(),get_current_instance(),check_instance_health()
漏洞扫描(新增)
vuln_scan(),vuln_scan_details(),vuln_scan_function(),vuln_categories()
核心功能
lookup_funcs(),int_convert(),list_funcs(),list_globals(),imports(),decompile(),disasm(),xrefs_to(),callees()
修改操作
set_comments(),patch_asm(),declare_type(),rename()
内存操作
get_bytes(),get_int(),get_string(),get_global_value(),patch(),put_int()
分析操作
py_eval(),analyze_funcs(),find_regex(),find_bytes(),find_insns(),find(),basic_blocks(),callgraph()
类型操作
set_type(),infer_types(),read_struct(),search_structs()
堆栈操作
stack_frame(),declare_stack(),delete_stack()
调试器操作(需要 --unsafe 旗帜)
dbg_start(),dbg_exit(),dbg_continue(),dbg_step_into(),dbg_step_over()等等。
致谢
- 原始项目: 网络/ida-pro-mcp
许可证
MIT许可证-请参阅 许可证 了解详情。
