CutterMCP 使用说明

项目简介

CutterMCP 是一个 Model Context Protocol (MCP) 服务器,旨在将 Cutter 这一强大的逆向工程工具的功能暴露给大型语言模型 (LLM)。通过 CutterMCP,LLM 客户端可以调用 Cutter 的各种分析工具,例如反编译、列出函数、导入导出表等,从而实现自动化的二进制文件分析任务。

主要功能点

  • 二进制文件分析: 允许 LLM 自动化地执行二进制文件的反编译和分析。
  • 信息提取: 能够列出二进制文件中的函数、导入、导出以及内存段等关键信息。
  • 动态修改: 支持通过 LLM 指令动态重命名函数和设置反编译器注释,实现交互式分析。
  • 工具集成: 以 MCP 工具的形式集成 Cutter 的核心功能,方便 LLM 调用。
  • HTTP 接口: 通过 HTTP 协议提供服务,客户端可以使用标准的 HTTP 请求与服务器交互。

安装步骤

  1. 安装 Cutter: 首先需要安装 Cutter 逆向工程平台。请访问 Cutter 的 GitHub 仓库或官方网站获取安装包并完成安装。
  2. 安装 Python 依赖: 确保你的系统安装了 Python 3,并使用 pip 安装 MCP Python SDK:
    pip install mcp-python-sdk
    pip install requests
  3. 安装 Cutter 插件 (可选): 如果你希望在 Cutter 内部直接运行 HTTP 服务器并进行交互,可以安装 Cutter 插件。
    • 下载仓库的最新 Release 版本。
    • 运行 Cutter,打开 Edit -> Preferences -> Plugins 菜单。
    • 找到插件目录位置(Preferences 窗口中会显示)。
    • 将下载 Release 包中的 'CutterMCPPlugin.py' 文件复制到插件目录下的 python 文件夹中。
    • 重启 Cutter,插件会在 Windows -> Plugins 菜单下显示。

服务器配置

CutterMCP 提供了两种运行模式:独立的 Python MCP 服务器Cutter 插件内置 HTTP 服务器

1. 独立 Python MCP 服务器 (bridge_mcp_cutter.py)

  • 配置文件 (JSON 格式):
    {
      "mcpServers": {
        "cutter": {
          "command": "python",
          "args": [
            "/ABSOLUTE_PATH_TO/bridge_mcp_cutter.py"  // 将这里替换为 bridge_mcp_cutter.py 文件的绝对路径
          ]
        }
      }
    }
  • 配置参数说明:
    • 'server name': 'cutter' (服务器名称,客户端配置中用于标识)
    • 'command': 'python' (运行服务器的命令)
    • 'args': '[ "/ABSOLUTE_PATH_TO/bridge_mcp_cutter.py" ]' (启动服务器的命令行参数,需要替换为 'bridge_mcp_cutter.py' 脚本的实际绝对路径)

2. Cutter 插件内置 HTTP 服务器 (CutterMCPPlugin.py)

  • 无需额外配置,插件安装完成后,启动 Cutter 即可自动运行 HTTP 服务器。默认监听端口为 '8000'。

基本使用方法

  1. 启动 MCP 服务器:

    • 独立服务器: 根据上述服务器配置,在 MCP 客户端 (例如 Claude Desktop) 中配置并启动 'cutter' 服务器。
    • 插件服务器: 启动 Cutter 软件,插件会自动启动 HTTP 服务器。
  2. 客户端调用工具: 在 MCP 客户端中,你可以使用以下工具与 CutterMCP 服务器交互 (以 'bridge_mcp_cutter.py' 提供的工具为例):

    • 'list_functions(offset, limit)': 列出函数列表,'offset' 和 'limit' 参数用于分页。
    • 'decompile_function_by_address(address)': 反编译指定地址的函数。
    • 'list_segments(offset, limit)': 列出内存段。
    • 'list_imports(offset, limit)': 列出导入表。
    • 'list_exports(offset, limit)': 列出导出表。
    • 'search_functions_by_name(query, offset, limit)': 按名称搜索函数。
    • 'rename_function_by_address(function_address, new_name)': 重命名函数。
    • 'set_decompiler_comment(address, comment)': 设置反编译注释。

    例如,在 Claude Desktop 中,你可以通过自然语言指令,间接调用这些工具来分析二进制文件。具体指令格式取决于 Claude Desktop 或其他 MCP 客户端的实现。

注意: 'CutterMCPPlugin.py' 提供的 HTTP 服务接口与 'bridge_mcp_cutter.py' 提供的 MCP 工具略有不同,前者直接通过 HTTP GET/POST 请求访问,后者则通过 MCP 协议和工具调用。请根据你的使用场景选择合适的服务器模式。

信息

分类

开发者工具