r0idamcp

查看源码
2025-5-12
Words 1061Read Time 3 min
Score:85

r0idamcp 是一个基于 SSE 协议的 MCP 服务器 IDA Pro 插件,用于与 LLM 助手配合进行自动化逆向工程。

Python

r0idamcp

大模型驱动的 IDA Pro 智能自动化逆向体验,单文件 MCP 服务器
交流学习:加微信:r0ysue(备注:进 MCP 学习群)
本项目的优点如下:
  • 功能集大成:集成了市面上已有项目的大部分功能,并会根据 issue 继续维护和添加新功能。
  • 依赖极少:仅需最新的 FastMCP 2.0,无需复杂的 UV 或特定版本的 Python。
  • 兼容性强:支持所有 MCP 功能的大模型助手,无需科学上网或配置复杂的依赖和环境,成功率极高。
  • 代码极简:市面上大量项目采用嵌套代码生成工具,可读性较差。本项目浓缩为单文件,mcp.tool 声明与实现一一对应,可读性极强,伸缩性和扩展性极佳。

安装要求:

  • uv:不需要
  • python:不需要(使用 IDA 自带的 Python 即可)
  • IDA Pro:推荐 8.3 以上,最好 9.x
  • 支持的 MCP 客户端:所有

安装方式:

  1. 正常安装并使用 IDA Pro,运行 idapyswitch 指定 Python 路径。
  1. 使用同路径的 Python 安装 pip,并通过 pip 安装 fastmcp
    1. r0idamcp.py 文件拷贝到 IDA 插件目录下,插件目录如下:
      1. Windows
        %appdata%\Hex-Rays\IDA Pro\plugins
        Linux
        ~/.idapro/plugins/
        macOS
        ~/Library/Application Support/IDA Pro/plugins/
        安装完毕!

    使用流程:

    1. 打开 IDA 主界面,下方的 Python 窗口会输出日志:
      1. 点击:编辑 -> 插件 -> r0idamcp,开启 MCP 服务器,日志如下:
        1. 如有提示访问局域网设备、请求局域网连接等,请一并允许;防火墙允许 26868 端口通过或关闭。如果 IDA 与大模型助手运行在同一台电脑,也可以将源码中的 0.0.0.0 改成 127.0.0.1,实现纯本地连接。
      1. 大部分支持 MCP 功能的大模型助手都会支持 JSON 配置文件配置:
        1. 192.168.1.2 为 IDA Pro 所在电脑的 IP 地址。
          如果使用 GUI 界面配置,应选择添加 SSE 服务器,URL 同上。配置成功并检查连接状态时,IDA 下方 Python 窗口出现如下日志则表示连接成功:
          现在可以开始大模型驱动的自动化逆向啦!

      已有功能:

      • check_connection:确认服务器正在运行。
      • get_metadata():获取 IDB 文件的元数据。
      • get_function_by_name(name):根据函数名获取函数。
      • get_function_by_address(address):根据函数地址获取函数。
      • get_current_address():获取当前选中的地址。
      • get_current_function():获取当前选中地址的函数。
      • convert_number(text, size):十进制与十六进制互转。
      • list_functions(offset, count):分页列出 IDB 中的所有函数。
      • list_strings(offset, count):分页列出 IDB 中的所有字符串。
      • search_strings(pattern, offset, count):搜索字符串。
      • decompile_function(address):反编译指定地址的函数至伪代码。
      • disassemble_function(start_address):反编译指定地址的函数至机器码。
      • get_xrefs_to(address):列出指定地址的引用位置。
      • get_entry_points():列出数据库中所有的入口点。
      • set_comment(address, comment):在指定地址添加注释。
      • rename_local_variable(function_address, old_name, new_name):重命名函数内的局部变量。
      • set_local_variable_type(function_address, variable_name, new_type):指定局部变量的类型。
      • rename_global_variable(old_name, new_name):重命名全局变量。
      • set_global_variable_type(variable_name, new_type):指定全局变量的类型。
      • rename_function(function_address, new_name):重命名函数。
      • set_function_prototype(function_address, prototype):指定函数的原型。
      • declare_c_type(c_declaration):根据 C 声明创建或更新局部变量类型。
      为了达到最准确的执行效果,建议提示词尽可能采用我的中文翻译(或函数名),以提高命中率。
      抓紧玩起来吧,宝子们!有问题欢迎群里反馈,我们会根据反馈修复或更新功能~

      致谢:

      上一篇
      feyod-mcp
      下一篇
      indian-railway-mcp