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 客户端:所有
安装方式:
- 正常安装并使用 IDA Pro,运行
idapyswitch
指定 Python 路径。
- 使用同路径的 Python 安装
pip
,并通过pip
安装fastmcp
:
- 将
r0idamcp.py
文件拷贝到 IDA 插件目录下,插件目录如下:
Windows | %appdata%\Hex-Rays\IDA Pro\plugins |
Linux | ~/.idapro/plugins/ |
macOS | ~/Library/Application Support/IDA Pro/plugins/ |
安装完毕!
使用流程:
- 打开 IDA 主界面,下方的 Python 窗口会输出日志:
- 点击:编辑 -> 插件 ->
r0idamcp
,开启 MCP 服务器,日志如下:
如有提示访问局域网设备、请求局域网连接等,请一并允许;防火墙允许 26868 端口通过或关闭。如果 IDA 与大模型助手运行在同一台电脑,也可以将源码中的0.0.0.0
改成127.0.0.1
,实现纯本地连接。
- 大部分支持 MCP 功能的大模型助手都会支持 JSON 配置文件配置:
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 声明创建或更新局部变量类型。
为了达到最准确的执行效果,建议提示词尽可能采用我的中文翻译(或函数名),以提高命中率。
抓紧玩起来吧,宝子们!有问题欢迎群里反馈,我们会根据反馈修复或更新功能~
致谢:
- Author:waytomcp
- URL:https://www.waytomcp.com/article/r0ysue/r0idamcp
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!