(1)在终端进入ida的路径
bash
cd /Applications/IDA\ Professional\ 9.0.app/Contents/MacOS
(2)为ida设置python
bash
./idapyswitch --force-path /opt/homebrew/Cellar/python@3.11/3.11.12/Frameworks/Python.framework/Versions/3.11/Python
(3)在终端执行安装ida mcp
arduino
pip3.11 install --upgrade git+https://github.com/mrexodia/ida-pro-mcp
验证:
bash
ida-pro-mcp --help
(4)安装Ida插件
css
ida-pro-mcp --install
(5)配置ida mcp的信息
css
% ida-pro-mcp --config
[HTTP MCP CONFIGURATION]
{
"mcpServers": {
"ida-pro-mcp": {
"type": "http",
"url": "http://127.0.0.1:13337/mcp"
}
}
}
[STDIO MCP CONFIGURATION]
{
"mcpServers": {
"ida-pro-mcp": {
"command": "/opt/homebrew/opt/python@3.11/bin/python3.11",
"args": [
"/opt/homebrew/lib/python3.11/site-packages/ida_pro_mcp/server.py",
"--ida-rpc",
"http://127.0.0.1:13337"
]
}
}
}
(6)IDA中启动MCP
插件只是加载了,但默认不会自动启动 RPC。
你需要在 IDA 里手动启动一次 MCP 插件,端口才会监听。
请在 IDA 执行:
rust
菜单:Edit -> Plugins -> MCP
或者快捷键:Ctrl-Alt-M(mac 上 Alt 通常是 Option)
(7)重启Claude Code后,查看可用的MCP列表
输入命令:
arduino
List available MCP tools
输出:
arduino
❯ List available MCP tools
⏺ 以下是当前会话中可用的 IDA Pro MCP 工具列表:
查找与导航工具
┌──────────────────────────────────┬────────────────────────────────┐
│ 工具名 │ 功能 │
├──────────────────────────────────┼────────────────────────────────┤
│ mcp__ida-pro-mcp__lookup_funcs │ 按地址或名称查找函数 │
├──────────────────────────────────┼────────────────────────────────┤
│ mcp__ida-pro-mcp__list_funcs │ 列出函数(支持过滤和分页) │
├──────────────────────────────────┼────────────────────────────────┤
│ mcp__ida-pro-mcp__list_globals │ 列出全局变量(支持过滤和分页) │
├──────────────────────────────────┼────────────────────────────────┤
│ mcp__ida-pro-mcp__imports │ 列出导入函数 │
├──────────────────────────────────┼────────────────────────────────┤
│ mcp__ida-pro-mcp__basic_blocks │ 获取函数的基本块用于控制流图 │
├──────────────────────────────────┼────────────────────────────────┤
│ mcp__ida-pro-mcp__search_structs │ 搜索结构体 │
└──────────────────────────────────┴────────────────────────────────┘
反编译与汇编工具
┌────────────────────────────────┬────────────────────────┐
│ 工具名 │ 功能 │
├────────────────────────────────┼────────────────────────┤
│ mcp__ida-pro-mcp__decompile │ 将函数反编译为伪代码 │
├────────────────────────────────┼────────────────────────┤
│ mcp__ida-pro-mcp__disasm │ 将函数反汇编为汇编指令 │
├────────────────────────────────┼────────────────────────┤
│ mcp__ida-pro-mcp__declare_type │ 声明类型 │
├────────────────────────────────┼────────────────────────┤
│ mcp__ida-pro-mcp__infer_types │ 推断类型 │
└────────────────────────────────┴────────────────────────┘
交叉引用与调用图
┌──────────────────────────────────┬────────────────────────────┐
│ 工具名 │ 功能 │
├──────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__xrefs_to │ 获取到指定地址的交叉引用 │
├──────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__xrefs_to_field │ 获取到结构体字段的交叉引用 │
├──────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__callees │ 获取指定函数调用的函数 │
├──────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__callgraph │ 从根函数构建调用图 │
└──────────────────────────────────┴────────────────────────────┘
搜索工具
┌──────────────────────────────┬────────────────────────────┐
│ 工具名 │ 功能 │
├──────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__find │ 搜索字节数据 │
├──────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__find_regex │ 使用正则表达式搜索字符串 │
├──────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__find_bytes │ 搜索字节模式(支持通配符) │
└──────────────────────────────┴────────────────────────────┘
内存读取与数据获取
┌────────────────────────────────────┬────────────────────────────┐
│ 工具名 │ 功能 │
├────────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__get_bytes │ 从内存地址读取字节 │
├────────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__get_int │ 从内存地址读取整数值 │
├────────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__get_string │ 从内存地址读取字符串 │
├────────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__get_global_value │ 按地址或名称读取全局变量值 │
├────────────────────────────────────┼────────────────────────────┤
│ mcp__ida-pro-mcp__read_struct │ 读取结构体类型并解析内存值 │
└────────────────────────────────────┴────────────────────────────┘
修改与编辑工具
┌────────────────────────────────┬────────────────────────────────────────────┐
│ 工具名 │ 功能 │
├────────────────────────────────┼────────────────────────────────────────────┤
│ mcp__ida-pro-mcp__patch │ 用十六进制数据在内存地址打补丁 │
├────────────────────────────────┼────────────────────────────────────────────┤
│ mcp__ida-pro-mcp__patch_asm │ 用汇编指令在地址打补丁 │
├────────────────────────────────┼────────────────────────────────────────────┤
│ mcp__ida-pro-mcp__put_int │ 将整数值写入内存地址 │
├────────────────────────────────┼────────────────────────────────────────────┤
│ mcp__ida-pro-mcp__set_type │ 应用类型(函数/全局/局部/栈变量) │
├────────────────────────────────┼────────────────────────────────────────────┤
│ mcp__ida-pro-mcp__set_comments │ 在地址设置注释 │
├────────────────────────────────┼────────────────────────────────────────────┤
│ mcp__ida-pro-mcp__rename │ 统一重命名函数、全局变量、局部变量和栈变量 │
└────────────────────────────────┴────────────────────────────────────────────┘
函数与代码定义
┌───────────────────────────────┬──────────────────────────────┐
│ 工具名 │ 功能 │
├───────────────────────────────┼──────────────────────────────┤
│ mcp__ida-pro-mcp__define_func │ 在地址定义函数 │
├───────────────────────────────┼──────────────────────────────┤
│ mcp__ida-pro-mcp__define_code │ 将字节转换为地址处的代码指令 │
├───────────────────────────────┼──────────────────────────────┤
│ mcp__ida-pro-mcp__undefine │ 取消定义项目,转换回原始字节 │
└───────────────────────────────┴──────────────────────────────┘
栈变量工具
┌─────────────────────────────────┬────────────┐
│ 工具名 │ 功能 │
├─────────────────────────────────┼────────────┤
│ mcp__ida-pro-mcp__stack_frame │ 获取栈变量 │
├─────────────────────────────────┼────────────┤
│ mcp__ida-pro-mcp__declare_stack │ 创建栈变量 │
├─────────────────────────────────┼────────────┤
│ mcp__ida-pro-mcp__delete_stack │ 删除栈变量 │
└─────────────────────────────────┴────────────┘
导出工具
┌────────────────────────────────┬────────────────────────┐
│ 工具名 │ 功能 │
├────────────────────────────────┼────────────────────────┤
│ mcp__ida-pro-mcp__export_funcs │ 以各种格式导出函数数据 │
└────────────────────────────────┴────────────────────────┘
Python 执行
┌───────────────────────────┬─────────────────────────────────────────────────────┐
│ 工具名 │ 功能 │
├───────────────────────────┼─────────────────────────────────────────────────────┤
│ mcp__ida-pro-mcp__py_eval │ 在 IDA 上下文中执行 Python 代码(访问所有 IDA API) │
└───────────────────────────┴─────────────────────────────────────────────────────┘
数字转换
工具名: mcp__ida-pro-mcp__int_convert
功能: 将数字转换为不同格式(十六进制、十进制、二进制、ASCII)
---
总计: 34 个 MCP 工具可用