欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 使用MCP驱动IDA pro分析样本

使用MCP驱动IDA pro分析样本

2025/7/7 21:57:26 来源:https://blog.csdn.net/a854596855/article/details/148074543  浏览:    关键词:使用MCP驱动IDA pro分析样本

最近国外的牛人开发了一个ida pro的mcp server,项目的地址为mrexodia/ida-pro-mcp: MCP Server for IDA Pro,实现了通过自然对话来分析样本。

今天我们试用一下。

MCP Server for IDA Pro项目简介

这个mcp server提供下面这些工具,基本涵盖了IDA常用的操作。

check_connection:检查 IDA 插件是否正在运行。
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):列出数据库中的所有函数(分页)。
list_strings(offset, count):列出数据库中的所有字符串(分页)。
search_strings(pattern, offset, count):搜索包含给定模式的字符串(不区分大小写)。
decompile_function(address):在给定地址处反编译函数。
disassemble_function(start_address):获取函数的汇编代码 (address: instruction; comment)。
get_xrefs_to(address):获取对给定地址的所有交叉引用。
get_entry_points():获取数据库中的所有入口点。
set_comment(address, comment):在函数 disassembly 和 pseudocode 中为给定地址设置注释。
rename_local_variable(function_address, old_name, new_name):重命名函数中的局部变量。
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 声明创建或更新本地类型。
set_local_variable_type(function_address, variable_name, new_type):设置局部变量的类型。

项目原理也非常简单,如下图所示,在IDA pro中需要安装一个插件,这个插件开启一个web server,mcp server调用插件提供的web api,插件根据mcp server提交的指令在IDA中执行对应的操作。

drawio

一、下载部署

将项目的源代码下载到本地后,使用vscode打开

cd ida-pro-mcp
# 同步项目依赖
uv sync
# 激活python环境
.venv\Scripts\activate
# 测试代码,没有报错,说明代码没问题
uv run src/ida_pro_mcp/server.py

二、安装ida pro插件

插件的位置mcp-plugin.py

将这个文件拷贝到IDA pro的插件目录下,我的是D:\tools\IDA_Pro_v8.3_Portable\plugins

这个插件最低要求是IDA 8.3,python环境为python3.11+。

打开IDA,点击菜单Edit->Plugins->MCP,就会开启web服务。

image-20250519203225944

三、在cherry stdio中使用

在cherry stdio的mcp配置中添加下面的配置,根据你的代码位置修改目录。

"ida-pro-mcp": {"command": "uv","args": ["--directory","D:\\博客\\mcp1\\ida-pro-mcp\\src\\ida_pro_mcp","run","server.py","--install-plugin"],"timeout": 1800,"disabled": false,"autoApprove": ["check_connection","get_metadata","get_function_by_name","get_function_by_address","get_current_address","get_current_function","convert_number","list_functions","list_strings","search_strings","decompile_function","disassemble_function","get_xrefs_to","get_entry_points","set_comment","rename_local_variable","rename_global_variable","set_global_variable_type","rename_function","set_function_prototype","declare_c_type","set_local_variable_type"],"alwaysAllow": ["check_connection","get_metadata","get_function_by_name","get_function_by_address","get_current_address","get_current_function","convert_number","list_functions","list_strings","search_strings","decompile_function","disassemble_function","get_xrefs_to","get_entry_points","set_comment","rename_local_variable","rename_global_variable","set_global_variable_type","rename_function","set_function_prototype","declare_c_type","set_local_variable_type"]}

测试一下效果,我已经打开了一个恶意代码。

image-20250519205106315

image-20250519205132381

image-20250519205529069

只能说,很厉害。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词