项目简介

IDA Swarm MCP 服务器是一个强大的后端服务,旨在通过AI驱动的多智能体协作,将复杂的IDA Pro逆向工程能力开放给LLM客户端。它通过标准化的MCP协议,允许LLM发起逆向工程任务、与分析中的IDA会话进行交互,并获取详细的分析结果。服务器负责管理IDA Pro进程、AI智能体之间的通信与协作,以及数据合并与冲突解决。

主要功能点

  • IDA Pro会话管理: 启动、监控和终止IDA Pro实例,每个实例都运行一个AI编排器。
  • 多智能体协调: 启动并管理多个AI智能体(作为独立的IDA Pro实例),它们在二进制文件副本上并行工作,并通过IRC进行协作和冲突解决。
  • 动态工具执行: 允许LLM通过调用MCP工具,在IDA Pro环境中执行搜索函数、分析数据、设置名称/注释、打补丁(字节/汇编)以及代码注入等操作。
  • 上下文感知交互: LLM可以与正在进行的逆向工程会话进行持续对话,获取最新发现,并指导进一步的分析。
  • 结果聚合与报告: 智能体的分析结果和补丁会由编排器进行汇总和合并,并提供给LLM客户端。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/shells-above/ida-swarm.git
    cd ida-swarm
  2. 安装依赖: 确保已安装以下软件:
    • IDA Pro 9.0 Beta (版本 9.0.240807)
    • Qt 5.15.2 (IDA的自定义构建版本)
      • 从 'https://hex-rays.com/blog/ida-8-4-qt-5-15-2-sources-build-scripts' 下载源代码并构建。
      • macOS用户需解压到 '/Users/Shared/Qt/5.15.2-arm64' (目录名必须包含 '-arm64')。
    • 构建工具: CMake 3.16+、C++20兼容编译器。Keystone汇编器会自动构建。
    • Claude API 访问: 需要Anthropic API Key。
  3. 配置构建路径: 编辑项目根目录下的 'CMakeLists.txt' 文件,设置以下路径:
    set(IDASDK_PATH "/path/to/idasdk90")         # IDA SDK路径
    set(IDA_PLUGINS_PATH "/path/to/ida/plugins") # IDA Pro插件目录
    set(QTDIR "/path/to/qt-5.15.2")              # Qt安装路径
  4. 构建项目: 在项目根目录运行以下命令:
    mkdir build && cd build
    cmake ..
    make
    make install # 将插件安装到IDA插件目录
  5. 配置API访问: 复制示例配置文件 'llm_re_config.json.example' 到用户IDA Pro配置目录(通常是 '~/.idapro/' 或 '%APPDATA%\Hex-Rays\IDA Pro')并重命名为 'llm_re_config.json'。编辑该文件,填入您的Anthropic API Key:
    {
      "api": {
        "auth_method": "api_key",
        "api_key": "sk-ant-..."
      }
    }
  6. 配置MCP服务器:
    • 找到IDA Pro可执行文件路径,例如:
      • macOS: '/Applications/IDA Professional 9.0.app/Contents/MacOS/ida64'
      • Linux: '/opt/idapro-9.0/ida64'
      • Windows: 'C:\Program Files\IDA Professional 9.0\ida64.exe'
    • 在您的用户主目录创建一个名为 '.ida_swarm_mcp' 的文件夹:'mkdir ~/.ida_swarm_mcp'
    • 在该文件夹中创建 'server_config.json' 文件,内容如下:
      {
        "max_sessions": 5,
        "ida_path": "/path/to/your/ida64" // 替换为IDA Pro可执行文件的实际路径
      }
      'max_sessions' 为服务器同时管理的IDA Pro会话数量上限,'ida_path' 为IDA Pro可执行文件的实际路径。

服务器配置 (供MCP客户端使用)

您的MCP客户端需要以下JSON配置信息来连接IDA Swarm MCP服务器:

{
  "server_name": "IDA Swarm MCP Server",
  "command": "/path/to/ida-swarm/build/mcp_server/mcp_server",
  "args": []
}

请注意:

  • 'server_name': 服务器的标识名称,固定为 "IDA Swarm MCP Server"。
  • 'command': 启动IDA Swarm MCP服务器可执行文件的完整路径。您需要在构建'ida-swarm'项目后,找到 'ida-swarm/build/mcp_server/mcp_server'(在Windows上为 'mcp_server.exe')的实际位置并替换此路径。
  • 'args': 启动服务器时所需的额外命令行参数列表,通常为空数组。

基本使用方法

  1. 启动MCP服务器: 在命令行中,导航到您构建好的 'mcp_server' 可执行文件所在目录(例如 'ida-swarm/build/mcp_server'),然后运行:
    ./mcp_server
    服务器将开始监听MCP客户端的请求,并将通过标准输出(stdout)与客户端通信。
  2. 通过MCP客户端交互: 您的LLM客户端(或其他MCP兼容客户端)现在可以连接到IDA Swarm MCP服务器,并使用服务器暴露的以下工具来发起逆向工程任务:
    • 'start_analysis_session(binary_path: str, task: str, run_in_background: bool = false)': 启动一个针对指定二进制文件的IDA Pro AI分析会话,'task'参数应包含详细的逆向工程任务描述。
    • 'send_message(session_id: str, message: str, run_in_background: bool = false)': 向活跃的分析会话发送进一步的指令或问题。
    • 'get_session_messages(session_id: str, max_messages: int = -1)': 非阻塞地获取会话中累积的智能体响应。
    • 'wait_for_response(session_id: str, timeout_ms: int = -1)': 阻塞等待会话的下一个响应,直到有结果或达到超时。
    • 'close_session(session_id: str)': 终止一个分析会话。 LLM客户端将通过JSON-RPC调用这些工具,并接收服务器返回的JSON-RPC响应。

信息

分类

开发者工具