使用说明

项目简介

Headless IDA MCP Server 是一个基于 IDA Pro headless 模式开发的多客户端协议 (MCP) 服务器。它允许用户通过 MCP 协议远程调用 IDA Pro 的分析功能,实现对二进制文件的自动化分析和管理。该服务器集成了多种实用工具,例如获取函数信息、反编译代码、获取交叉引用等,旨在为大型语言模型 (LLM) 提供强大的逆向工程和安全分析能力。

主要功能点

  • 函数信息查询: 获取指定地址或函数名的函数详细信息,包括起始地址、结束地址、函数名和原型。
  • 反编译: 对指定地址的函数进行反编译,生成可读的伪代码,方便代码理解和分析。
  • 反汇编: 获取指定函数的汇编代码,支持指令地址和注释显示,用于深入理解机器码。
  • 交叉引用查询: 查找指定地址的交叉引用,帮助分析代码的调用关系和数据流。
  • 代码注释: 支持在反编译器和反汇编器中为指定地址添加注释,方便用户进行代码标记和知识沉淀。
  • 变量和函数重命名: 允许远程重命名局部变量和函数名称,提高代码可读性。
  • 函数原型设置: 支持远程设置函数原型,帮助IDA Pro更准确地分析函数调用和参数。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/cnitlrt/headless-ida-mcp-server.git
    cd headless-ida-mcp-server
  2. 安装依赖:

    uv venv
    source .venv/bin/activate
    uv pip install .
    • 确保已安装 Python 3.10 或更高版本。
    • 确保已安装 IDA Pro 并且 headless 版本 (idat) 可用,并参考 headless-ida 进行配置。
  3. 配置环境变量: 复制 '.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。

基本使用方法

  1. 启动服务器: 在项目根目录下,激活虚拟环境后运行以下命令启动 Headless IDA MCP Server:

    uv run headless_ida_mcp_server

    服务器成功启动后,将监听配置的端口,等待 MCP 客户端连接。

  2. 连接 MCP 客户端: 使用 MCP 客户端 (例如 '@modelcontextprotocol/inspector' 或 Langchain MCP Client) ,根据上述 “服务器配置 (MCP客户端)” 中的 JSON 配置信息连接到 Headless IDA MCP Server。

  3. 通过 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 信息,然后点击连接即可。

信息

分类

开发者工具