使用说明

项目简介

pcm (MCP but reversed) 是一个基于 Model Context Protocol (MCP) 构建的 IDA Pro 服务器,旨在为大型语言模型 (LLM) 提供逆向工程分析能力。通过 pcm,LLM 客户端可以以标准化的方式访问 IDA Pro 的强大功能,例如代码反汇编、反编译、函数分析、交叉引用查询等,从而实现自动化和智能化的逆向工程工作流程。

主要功能点

  • 强大的 IDA Pro 功能集成: pcm 充分利用 IDA Pro 的强大功能,将反汇编、反编译、代码分析等核心能力通过 MCP 协议暴露给 LLM 客户端。
  • 丰富的工具集: 提供了一系列预定义的工具 (Tools),涵盖了逆向工程中常用的操作,例如:
    • 获取函数信息(按名称、地址、当前地址/函数)
    • 列出函数、入口点、代码块、控制流图
    • 反编译和反汇编函数
    • 查询交叉引用(来源和目标)
    • 设置反编译器和反汇编器注释
    • 重命名函数和局部变量
    • 设置函数原型和局部变量类型
    • 创建结构体类型
    • 获取二进制文件元数据
    • 执行 IDAPython 脚本
    • 添加、更新、获取和删除分析笔记
  • 结构化数据返回: 所有工具都以 JSON 格式返回结构化数据,方便 LLM 客户端解析和利用。
  • 支持分析笔记: 内置分析笔记功能,允许用户记录分析过程中的重要信息,并支持按文件、地址和标签进行检索。
  • 可扩展性: 基于 FastMCP 框架构建,易于扩展和定制新的工具和功能。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/rand-tech/pcm
    cd pcm
  2. 安装 uv (可选,但推荐): uv 是一个快速的 Python 包安装和运行工具,可以提高性能。如果未安装 uv,可以使用 pip 代替,但性能可能稍逊。 按照 uv 官方文档进行安装。

  3. 配置 MCP 客户端: 在您的 MCP 客户端配置中,添加 pcm 服务器的配置信息。

  4. 安装 IDA Pro 插件 (可选,但推荐): 运行 'server.py' 时可以使用 '--install-plugin' 参数自动安装 IDA 插件,或者手动复制 'src/ida/mcp.py' 到 IDA Pro 的插件目录。插件安装后,需要在 IDA Pro 中手动启动插件才能使 MCP 服务器正常工作。

服务器配置

MCP 客户端需要配置 pcm 服务器的启动命令和参数,以下是一个典型的 JSON 格式配置示例,请根据您的实际 'pcm' 仓库路径进行修改:

{
    "mcpServers": {
        "pcm": {
            "command": "uv",
            "args": [
                "--directory",
                "path_to/pcm",  // 将 "path_to/pcm" 替换为您的 pcm 仓库的绝对路径
                "run",
                "server.py"
            ]
        }
    }
}

参数说明:

  • '"pcm"': 服务器名称,可以自定义,用于在 MCP 客户端中引用该服务器。
  • '"command": "uv"': 启动服务器的命令,这里使用 'uv' 命令来运行 Python 脚本。如果您没有安装 uv 或者想使用 pip,可以将 'command' 修改为 'python' 或 'python3',并相应调整 'args' 中的脚本路径。
  • '"args"': 传递给 'command' 的参数列表。
    • '"--directory", "path_to/pcm"': 指定 uv (或 python) 命令的工作目录为 pcm 仓库的根目录。请务必将 '"path_to/pcm"' 替换为您的 pcm 仓库在您本地文件系统中的绝对路径。
    • '"run", "server.py"': 指示 uv (或 python) 运行 'server.py' 脚本,该脚本负责启动 MCP 服务器。

注意: MCP 客户端需要能够执行 'uv' 命令(或您配置的 'command' 命令)。请确保 'uv' (或 python) 已正确安装并添加到系统的 PATH 环境变量中。

基本使用方法

  1. 启动 IDA Pro 并加载二进制文件。
  2. 启动 pcm 服务器: MCP 客户端会根据您配置的命令和参数自动启动 pcm 服务器。或者,您也可以手动在 pcm 仓库目录下运行 'uv run server.py' 命令来启动服务器。
  3. 在 IDA Pro 中启动 MCP 插件 (如果已安装): 通过 "Edit" -> "Plugins" -> "pcm (Ctrl-Alt-M)" 菜单项启动 IDA Pro 插件。插件启动后,IDA Pro 内部的 HTTP JSON-RPC 服务器才会开始监听请求。
  4. 在 MCP 客户端中使用 pcm 服务器: 在您的 LLM 应用或 MCP 客户端中,配置连接到名为 "pcm" 的 MCP 服务器,并使用 MCP 协议发送请求,调用 pcm 服务器提供的各种工具,进行逆向工程分析。

例如,使用 MCP 客户端请求反编译当前 IDA Pro 中选中的函数:

客户端发送类似以下的 JSON-RPC 请求:

{
  "jsonrpc": "2.0",
  "method": "pcm/decompile_function",
  "params": [ <当前选中函数的地址> ],
  "id": 1
}

pcm 服务器会将请求转发给 IDA Pro 插件,插件调用 IDA Pro 的反编译功能,并将反编译结果以 JSON-RPC 响应返回给客户端。

更多工具和使用方法请参考 'src/ida/mcp.py' 文件中以 '@jsonrpc' 装饰器标记的函数,以及仓库的 README 文档。

信息

分类

开发者工具