IDA Pro集成MCP的小实战:构建DeepSeek智能逆向分析工作流
一、MCP简介
Model Context Protocol(MCP)作为Anthropic推出的标准化通信接口,可以将AI模型与外部数据源和工具建立安全的双向连接,为AI模型提供了连接不同数据源和服务的一种标准化手段。简单来说,MCP 是一个开放协议,将应用程序向大语言模型 (LLM)提供上下文的方式进行了标准化。
MCP的核心组件是:
-
• 主机(Host):运行AI助手或一些支持 MCP 的应用环境(如Cherry Studio、Claude App) -
• MCP 客户端(MCP Client):客户端运行于主机上,按照服务器获取的信息处理 AI请求,并与服务器通信 -
• MCP 服务器(MCP Server):连接数据源或服务的中间连接层(如数据库、API)
假设你正在使用 Claude Desktop (Host) 询问:"我桌面上有哪些文档?"时,整个流程是这样的:你的问题 → Claude Desktop(Host) → Claude 模型 → 需要文件信息 → MCP Client 连接 → 文件系统 MCP Server → 执行操作 → 返回结果 → Claude 生成回答 → 显示在 Claude Desktop 上。 https://zhuanlan.zhihu.com/p/29001189476
二、IDA Pro MCP工具概述
-
• 语义桥梁:建立二进制数据与大语言模型的通用交互语言 -
• 操作抽象:将反编译、交叉引用等23种逆向操作封装为API指令 -
• 上下文感知:实时同步IDA数据库状态,支持动态分析决策
三、环境部署与工具链搭建
Cherry Studio的配置
访问Cherry Studio的开源页面下载Windows版本客户端,并安装。
Cherry Studio安装成功后,打开Cherry Studio的设置页面,点击MCP服务器
菜单栏,直接点击自动安装UV与Bun环境。(也可以手动安装UV和Bun环境),安装成功后,UV缺失和Bun缺失的提示消失:
接下来,就是获取大模型服务的API Key,可以选择付费的API调用,如DeepSeek的API调用。也可以前往 https://openrouter.ai/ 薅免费大模型的API Key。
在Cherry Studio的设置页面,点击模型服务
菜单栏,配置大模型,比如可以选择openrouter
,键入openrouter
的API Key。此时就会出现一些免费的大模型可供选择、使用:
我们在使用MCP工具的时候,需要选择带有🔧扳手标志的大模型,此类型表示支持函数调用
功能,这样后续才可以在对话框加载上MCP工具
IDA-Pro-MCP的安装
接下来,按照 https://github.com/mrexodia/ida-pro-mcp 的描述安装IDA-Pro-MCP
也可以进入https://mcp.so 查找其它IDA相关的MCP工具安装
-
1. 安装Python 3.11+环境,安装 IDA Pro 8.3或者IDA Pro 9 -
2. 配置 MCP 服务器,部署IDA 插件: pip install git+https://github.com/mrexodia/ida-pro-mcpida-pro-mcp --install
-
-
3. 重启IDA Pro后,在Edit > Plugins列表确认"IDA Pro MCP"是否存在 -
4. 此时,可以打开 Cherry Studio的设置页面,点击 MCP服务器
菜单栏,查看MCP服务是否配置成功、是否开启。如果没有配置成功,可以点击编辑MCP服务
,手动将下面的配置文件复制到对话框。然后点击、保存,此时配置成功后,该状态会变绿色:
{ "mcpServers": { "github.com/mrexodia/ida-pro-mcp": { "isActive": true, "command": "C:\Users\test\AppData\Local\Programs\Python\Python313\python.exe", "args": [ "C:\Users\test\AppData\Local\Programs\Python\Python313\Lib\site-packages\ida_pro_mcp\server.py" ], "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" ], "name": "github.com/mrexodia/ida-pro-mcp" } }}
手动配置MCP服务参数时候,需要将里面的路径改成自己环境中的路径
四、实例测试:Deepseek模型驱动的智能分析
0x1 环境准备:
-
1.1 启动支持函数调用的Deepseek-V3模型服务 -
1.2 在IDA中加载待分析ELF文件(示例:DefcampCTF2015 entry_language)
0x2 启用MCP工具:
-
使用IDA Pro加载ELF文件,然后在插件中启用MCP服务;打开Cherry Studio的会话窗口加载DeepSeek模型,启用MCP工具 -
-
测试IDA通过MCP是否和DeepSeek连通成功,提问:
[用户]此时IDA Pro中打开的文件是什么?----------------------------[DeepSeek Chat | 深度求索]get_metadata 已完成当前在IDA Pro中打开的文件是:路径: C:UserstestDesktopentry_language.elf模块名: entry_language.elf基地址: 0x400000大小: 0x2010b8 字节MD5: 7f24336a9475b4a6a79086f29ec0949aSHA256: 8c481c589e9f95acbfdc20b54f5965017604a4c149dd72ec6bde55a5ea2a11bcCRC32: 0x54f3155e文件大小: 0x18b0 字节如果需要进一步分析或操作该文件,请告诉我!
-
-
0x3 深入提问,继续分析
DeepSeek能成功分析到目标文件后,通过提示词调用MCP工具进行自动化分析、解题:
你需要进一步需要进一步分析或操作该文件,这是一个密码验证题,输入一个字符串,程序验证对错,输入错误的password错误会报错“Incorrect password!”,需要输入正确的password通过验证。你现在需要通过分析得到正确的password,你可以使用MCP工具检索信息,这个分析过程按照以下策略:- 你的工作路径是C:UserstestDesktop,重点关注的文件是entry_language.elf.id0、entry_language.elf.id1、entry_language.elf.id2、entry_language.elf.nam、entry_language.elf.til- 检查反编译的情况,并把你的发现添加到反编译的代码注释中- 将变量重命名为更合理的名称- 如果有必要,修改变量和参数类型(尤其是指针和数组类型)- 修改函数名,使其更具描述性- 如果需要更多的细节,反汇编函数,并把你的发现并添加到代码注释中- 永远不要自行改变数据类型。 如果需要,使用convert_number MCP工具!- 不要尝试暴力破解,而是从反汇编和简单的python脚本中获得一切解决方案- 创建一个report.md文件,在report.md文件中添加你的发现和你解决问题的步骤- 找到这个密码验证题的解决思路后,提示用户找到了正确的password,并说出password的正确值
-
0x4 结果验证
花了4角1分钱的token ,把关键部分的代码分析出来了:
但是AI并没直接把算法成功逆向、跑出正确的password。经测试下来,效果感觉还有许多优化和进步的地方
或许后续在执行自动化分析二进制程序的时候,需要注意一下:
-
• 预处理:预处理好混淆代码,亦或先用 math-mcp 等工具先处理等容易产生幻觉的场景(如算法) -
• 互动式执行分析任务:尽量分步执行分析的提示词,根据分析结果的反馈,调整下一步分析的提示词,让每一步都贴合实际情况 -
• 防幻觉机制:设置"如无明确证据需标注[推测]"
或许下次可以换个大模型来自动化分析,比如 Claude 3.7 Sonnet 。
五、结语
目前,MCP的加持,确实已经让自动化分析变得更加快捷、有效,能快速得到分析中需要的一些关键点。通过MCP协议,IDA Pro正在从静态分析工具转型为智能安全中台。这种变革不仅提升单个逆向任务的效率,更重要的是构建起人机协同的新型研究范式。
但现阶段,还是需要分析人员本身有一定的技术基础和经验,技巧性地使用提示词,交互式参与MCP工具的分析工作。期待未来有逆向分析的领域专属微调大模型或技术,让逆向分析或其它工作真•全智能化。
参考:
-
https://www.dailydoseofds.com/p/visual-guide-to-model-context-protocol-mcp/ -
https://github.com/mrexodia/ida-pro-mcp -
https://github.com/CherryHQ/cherry-studio/releases -
https://modelcontextprotocol.io/introduction -
https://zhuanlan.zhihu.com/p/29001189476
免责声明:
文章中涉及的内容可能带有攻击性、损害性,请注意识别。文章内容仅能用于安全检测、安全防御、安全研究等合法合规的用途,请勿用作其它方面。若有违反,违反者将自行承担相应法律责任及连带责任,违反者的行为与本文章内容的创作者无关。请遵守相关法律法规,共同维护网络环境的清朗!如有问题可私信联系,望知悉。
原文始发于微信公众号(哆啦安全):IDA Pro+MCP+DeepSeek逆向小实战:构建AI逆向分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论