使用说明
项目简介
Headless IDA MCP Server 是一个基于 IDA Pro headless 模式开发的多客户端协议 (MCP) 服务器。它允许用户通过 MCP 协议远程调用 IDA Pro 的分析功能,实现对二进制文件的自动化分析和管理。该服务器集成了多种实用工具,例如获取函数信息、反编译代码、获取交叉引用等,旨在为大型语言模型 (LLM) 提供强大的逆向工程和安全分析能力。
主要功能点
- 函数信息查询: 获取指定地址或函数名的函数详细信息,包括起始地址、结束地址、函数名和原型。
- 反编译: 对指定地址的函数进行反编译,生成可读的伪代码,方便代码理解和分析。
- 反汇编: 获取指定函数的汇编代码,支持指令地址和注释显示,用于深入理解机器码。
- 交叉引用查询: 查找指定地址的交叉引用,帮助分析代码的调用关系和数据流。
- 代码注释: 支持在反编译器和反汇编器中为指定地址添加注释,方便用户进行代码标记和知识沉淀。
- 变量和函数重命名: 允许远程重命名局部变量和函数名称,提高代码可读性。
- 函数原型设置: 支持远程设置函数原型,帮助IDA Pro更准确地分析函数调用和参数。
安装步骤
-
克隆仓库:
git clone https://github.com/cnitlrt/headless-ida-mcp-server.git cd headless-ida-mcp-server -
安装依赖:
uv venv source .venv/bin/activate uv pip install .- 确保已安装 Python 3.10 或更高版本。
- 确保已安装 IDA Pro 并且 headless 版本 (idat) 可用,并参考 headless-ida 进行配置。
-
配置环境变量: 复制 '.env_example' 文件并重命名为 '.env',然后根据您的环境修改以下变量:
IDA_PATH=/path/to/your/idat # IDA Pro headless 执行文件路径,例如 /home/user/ida/idat BINARY_PATH=./test/main # 要分析的二进制文件路径,例如 ./test/main PORT=8888 # MCP 服务器端口号,默认为 8888 HOST=127.0.0.1 # MCP 服务器主机地址,默认为 127.0.0.1 TRANSPORT=sse # MCP 传输模式,可选 sse 或 stdio,默认为 sse- 请务必根据实际 IDA Pro 安装路径和要分析的二进制文件路径配置 'IDA_PATH' 和 'BINARY_PATH'。
服务器配置 (MCP客户端)
MCP 客户端需要配置以下 JSON 格式信息以连接到 Headless IDA MCP Server:
{ "server_name": "ida", // 服务器名称,客户端用于标识和调用 "command": "uv run headless_ida_mcp_server", // 启动服务器的命令,在项目根目录下执行 "args": [], // 启动命令的参数,本服务器启动命令无需参数,保持为空数组即可 "transports": [ { "type": "sse", // 使用 SSE 传输协议 "url": "http://127.0.0.1:8888/sse" // SSE 协议的连接 URL,根据 .env 文件中的 HOST 和 PORT 配置 } ] }
- 'server_name':客户端用于在多个 MCP 服务器中识别和调用此服务器的名称,例如 "ida"。
- 'command':启动 Headless IDA MCP Server 的命令。假设您已按照安装步骤激活虚拟环境,此命令可以直接在项目根目录下运行服务器。
- 'args':启动命令的参数。本服务器启动命令 'uv run headless_ida_mcp_server' 不需要额外的命令行参数,因此 'args' 配置为空数组 '[]' 即可。 服务器的具体配置(如端口、主机、传输协议、IDA路径、二进制文件路径)通过 '.env' 环境变量文件进行配置,无需在客户端的 'args' 中指定。
- 'transports':定义客户端与服务器通信的传输协议。这里配置了 SSE 协议,并指定了连接 URL。URL 中的主机和端口应与 '.env' 文件中配置的 'HOST' 和 'PORT' 以及选择的 'TRANSPORT' 类型相匹配。如果 '.env' 中 'TRANSPORT' 设置为 'stdio',则客户端应配置 'stdio' 类型的 transport。
基本使用方法
-
启动服务器: 在项目根目录下,激活虚拟环境后运行以下命令启动 Headless IDA MCP Server:
uv run headless_ida_mcp_server服务器成功启动后,将监听配置的端口,等待 MCP 客户端连接。
-
连接 MCP 客户端: 使用 MCP 客户端 (例如 '@modelcontextprotocol/inspector' 或 Langchain MCP Client) ,根据上述 “服务器配置 (MCP客户端)” 中的 JSON 配置信息连接到 Headless IDA MCP Server。
-
通过 MCP 客户端调用 IDA Pro 功能: 连接成功后,您可以使用 MCP 客户端提供的界面或 API,通过服务器名称 (例如 "ida") 调用 Headless IDA MCP Server 提供的各种 IDA Pro 分析工具,例如查询函数信息、反编译代码等。具体可参考 MCP 客户端的使用文档和 Headless IDA MCP Server 的代码,了解可用的工具和参数。
注意事项
- 确保 IDA Pro headless 版本 ('idat') 能够正常运行,并且 'IDA_PATH' 配置正确。
- 'BINARY_PATH' 指定的二进制文件将在服务器启动时被 IDA Pro 加载分析。
- 服务器的性能和稳定性取决于 IDA Pro 本身,以及运行服务器的硬件资源。
- 使用 '@modelcontextprotocol/inspector' 客户端时,可以在其界面中直接配置上述 “服务器配置 (MCP客户端)” 中的 JSON 信息,然后点击连接即可。
信息
分类
开发者工具