项目简介
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客户端。
安装步骤
- 克隆仓库:
git clone https://github.com/shells-above/ida-swarm.git cd ida-swarm - 安装依赖:
确保已安装以下软件:
- 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。
- 配置构建路径:
编辑项目根目录下的 '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安装路径 - 构建项目:
在项目根目录运行以下命令:
mkdir build && cd build cmake .. make make install # 将插件安装到IDA插件目录 - 配置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-..." } } - 配置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' 为服务器同时管理的IDA Pro会话数量上限,'ida_path' 为IDA Pro可执行文件的实际路径。{ "max_sessions": 5, "ida_path": "/path/to/your/ida64" // 替换为IDA Pro可执行文件的实际路径 }
- 找到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': 启动服务器时所需的额外命令行参数列表,通常为空数组。
基本使用方法
- 启动MCP服务器:
在命令行中,导航到您构建好的 'mcp_server' 可执行文件所在目录(例如 'ida-swarm/build/mcp_server'),然后运行:
服务器将开始监听MCP客户端的请求,并将通过标准输出(stdout)与客户端通信。./mcp_server - 通过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响应。
信息
分类
开发者工具