mcpField
I
IDA Pro MCP Server

IDA Pro MCP Server

本地服务
github.com/fdrechsler安全10383 周前更新

关于 IDA Pro MCP Server

IDA Pro MCP Server 让 AI 助手通过 MCP 操作 IDA Pro,用于逆向工程和二进制分析。它由 IDA 插件、TypeScript 客户端和 MCP 服务三部分组成,适合需要自动化分析二进制文件的安全研究人员。

主要功能

  1. 01在 IDA Pro 中执行 Python 脚本
  2. 02查询字符串、导入、导出和函数列表
  3. 03搜索立即数、文本与字节序列
  4. 04获取指定地址范围的反汇编结果
  5. 05插件默认仅监听本地地址

适用场景

  1. 01让 AI 助手辅助分析二进制样本
  2. 02批量检索二进制中的字符串或特定字节序列
  3. 03通过脚本自动化 IDA Pro 的分析流程

MCP 相关

MCP 服务将 IDA Pro 的功能以工具形式(如 run_ida_command、get_functions)提供给 MCP 客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

IDA Pro MCP 服务

一个模型上下文协议(MCP)服务,可让 AI 助手使用 IDA Pro 执行逆向工程和二进制分析任务。

IDA Pro 服务 MCP 服务

概述

本项目为 AI 助手与 IDA Pro 搭建桥梁。IDA Pro 是一款广受欢迎的反汇编器和调试器,常用于软件逆向工程。项目由三个主要组件构成:

  1. IDA Pro 远程控制插件(ida_remote_server.py):一个 IDA Pro 插件,可创建 HTTP 服务以远程控制 IDA Pro 功能。
  2. IDA 远程客户端(idaremoteclient.ts):一个用于与 IDA Pro 远程控制服务交互的 TypeScript 客户端。
  3. MCP 服务(index.ts):一个模型上下文协议服务,可向 AI 助手提供 IDA Pro 功能。

功能

  • 让 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 服务使用示例

Roo 输出

安装

1. 安装 IDA Pro 远程控制插件
  1. 将 ida_remote_server.py 复制到 IDA Pro 插件目录:

    • Windows:%PROGRAMFILES%\IDA Pro\plugins
    • macOS:/Applications/IDA Pro.app/Contents/MacOS/plugins
    • Linux:/opt/idapro/plugins
  2. 启动 IDA Pro 并打开一个二进制文件。

  3. 插件将自动在 127.0.0.1:9045 上启动 HTTP 服务。

2. 安装 MCP 服务
  1. 克隆此仓库:

    git clone <repository-url>
    cd ida-server
    
  2. 安装依赖:

    npm install
    
  3. 构建项目:

    npm run build
    
  4. 在 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)[email protected]

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。