MCP服务器IDA Pro版
一种模型上下文协议服务器,可使AI助手与IDA Pro交互,以执行反向工程和二进制分析任务。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"ida-pro": {
"args": [
"path/to/ida-server/dist/index.js"
],
"command": "node",
"env": {}
}
}
}
服务介绍
IDA Pro MCP 服务器
一个模型上下文协议(MCP)服务器,使AI助手能够与IDA Pro进行交互,以执行反向工程和二进制分析任务。
概述
该项目为AI助手与IDA Pro之间搭建了一座桥梁。IDA Pro是一个流行的用于软件逆向工程的反汇编器和调试器。它由三个主要组件组成:
- IDA Pro 远程控制插件 (
ida_remote_server.py):一个IDA Pro插件,创建了一个HTTP服务器来远程控制IDA Pro的功能。 - IDA 远程客户端 (
idaremoteclient.ts):一个TypeScript客户端,用于与IDA Pro远程控制服务器交互。 - MCP 服务器 (
index.ts):一个模型上下文协议服务器,将IDA Pro功能暴露给AI助手。
功能
- 从AI助手中在IDA Pro中执行Python脚本
- 获取有关二进制文件的信息:
- 字符串
- 导入
- 导出
- 函数
- 高级二进制分析能力:
- 在指令中搜索立即数值
- 在二进制文件中搜索文本字符串
- 搜索特定的字节序列
- 获取地址范围的反汇编
- 通过标准化接口自动化IDA Pro操作
- 组件之间的安全通信
前提条件
- IDA Pro 8.3 或更高版本
- Node.js 18 或更高版本
- TypeScript
ida_remote_server.py 示例用法
curl -X POST -H "Content-Type: application/json" -d '{"script":"print(\"Script initialization...\")"}' http://127.0.0.1:9045/api/execute
{"success": true, "output": "Script initialization...\n"}
MCP 服务器示例用法

安装
1. 安装IDA Pro远程控制插件
-
将
ida_remote_server.py复制到您的IDA Pro插件目录:- Windows:
%PROGRAMFILES%\IDA Pro\plugins - macOS:
/Applications/IDA Pro.app/Contents/MacOS/plugins - Linux:
/opt/idapro/plugins
- Windows:
-
启动IDA Pro并打开一个二进制文件。
-
插件将自动在
127.0.0.1:9045上启动一个HTTP服务器。
2. 安装MCP服务器
-
克隆此仓库:
git clone <repository-url> cd ida-server -
安装依赖项:
npm install -
构建项目:
npm run build -
在您的AI助手的MCP设置文件中配置MCP服务器:
{ "mcpServers": { "ida-pro": { "command": "node", "args": ["path/to/ida-server/dist/index.js"], "env": {} } } }
使用
安装并配置完成后,MCP服务器为AI助手提供了以下工具:
run_ida_command
执行IDA Pro Python脚本。
参数:
scriptPath(必需): 要执行的脚本文件的绝对路径outputPath(可选): 保存脚本输出的绝对路径
示例:
# Example IDA Pro script (save as /path/to/script.py)
import idautils
# Count functions
function_count = len(list(idautils.Functions()))
print(f"Binary has {function_count} functions")
# Get the first 5 function names
functions = list(idautils.Functions())[:5]
for func_ea in functions:
print(f"Function: {ida_name.get_ea_name(func_ea)} at {hex(func_ea)}")
# Return data
return_value = function_count
AI助手可以使用如下命令调用此脚本:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>run_ida_command</tool_name>
<arguments>
{
"scriptPath": "/path/to/script.py"
}
</arguments>
</use_mcp_tool>
search_immediate_value
搜索二进制指令中的立即数。
参数:
value(必需): 要搜索的值(数字或字符串)radix(可选): 数字转换的基数(默认: 16)startAddress(可选): 搜索起始地址endAddress(可选): 搜索结束地址
示例:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_immediate_value</tool_name>
<arguments>
{
"value": "42",
"radix": 10
}
</arguments>
</use_mcp_tool>
search_text
在二进制文件中搜索文本字符串。
参数:
text(必需): 要搜索的文本caseSensitive(可选): 搜索是否区分大小写(默认: false)startAddress(可选): 搜索起始地址endAddress(可选): 搜索结束地址
示例:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_text</tool_name>
<arguments>
{
"text": "password",
"caseSensitive": false
}
</arguments>
</use_mcp_tool>
search_byte_sequence
在二进制文件中搜索特定的字节序列。
参数:
bytes(必需): 要搜索的字节序列(例如,"90 90 90" 表示三个 NOP)startAddress(可选): 搜索起始地址endAddress(可选): 搜索结束地址
示例:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_byte_sequence</tool_name>
<arguments>
{
"bytes": "90 90 90"
}
</arguments>
</use_mcp_tool>
get_disassembly
获取指定地址范围内的反汇编代码。
参数:
startAddress(必需): 反汇编起始地址endAddress(可选): 反汇编结束地址count(可选): 要反汇编的指令数量
示例:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_disassembly</tool_name>
<arguments>
{
"startAddress": "0x401000",
"count": 10
}
</arguments>
</use_mcp_tool>
get_functions
从二进制文件中获取函数列表。
参数:
- 无必需参数
示例:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_functions</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
get_exports
从二进制文件中获取导出列表。
参数:
- 无必需参数
示例:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_exports</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
get_strings
从二进制文件中获取字符串列表。
参数:
- 无必需参数
示例:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_strings</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
IDA Pro 远程控制 API
IDA Pro 远程控制插件提供了以下 HTTP 端点:
GET /api/info: 获取插件信息GET /api/strings: 从二进制文件中获取字符串GET /api/exports: 从二进制文件中获取导出GET /api/imports: 从二进制文件中获取导入GET /api/functions: 获取函数列表GET /api/search/immediate: 在指令中搜索立即数GET /api/search/text: 在二进制文件中搜索文本GET /api/search/bytes: 在二进制文件中搜索字节序列GET /api/disassembly: 获取指定地址范围内的反汇编代码POST /api/execute: 执行 Python 脚本 (JSON/Form)POST /api/executebypath: 从文件路径执行 Python 脚本POST /api/executebody: 从原始体执行 Python 脚本
安全考虑
默认情况下,IDA Pro 远程控制插件仅监听 127.0.0.1(本地主机)以确保安全。这可以防止远程访问您的 IDA Pro 实例。
如果您需要允许远程访问,可以在 ida_remote_server.py 中修改 DEFAULT_HOST 变量,但请注意相关的安全影响。
开发
从源代码构建
npm run build
运行测试
npm test
许可证
此项目使用 MIT 许可证发布。详情请参阅 LICENSE 文件。
作者
Florian Drechsler (@fdrechsler) fd@fdrechsler.com