一、MCP简介
Model Context Protocol(MCP)是一种专为大语言模型(LLM)设计的开放协议,旨在实现LLM与外部数据源、工具的无缝集成。MCP通过统一的接口规范,将原本分散的API插件集成简化为“即插即用”的模式,类似于AI领域的“USB-C接口”,解决了传统API插件集成中存在的多协议适配、高开发成本等问题。
MCP的核心组件是:
- MCP Host(主机): 作为整个系统的起点,MCP Host是启动连接的应用程序,例如Claude Desktop、Cursor IDE等。它的主要作用是接收用户的输入(如提问、指令等),并将这些输入传递给大型语言模型(LLM)进行处理。Host在整个交互过程中扮演“桥梁”的角色,连接用户与AI模型,确保用户的需求能够被准确地传达和处理。
- MCP Client(客户端):作为中间件,MCP Client负责维护与MCP Servers之间的连接。当LLM模型在处理用户请求时,如果需要访问外部资源或工具(如数据库、API等),Host中内置的MCP Client会被激活,它会根据LLM的需求,与适当的MCP Server建立连接,从而实现对所需资源的访问。
- MCP Server(服务器):作为提供具体功能的后端服务,MCP Server是一个轻量级的程序。它通过标准化协议暴露特定功能,可以是本地的Node.js或Python程序,也可以是远程的云服务。这种灵活性使得MCP协议能够适应各种不同的应用场景和部署需求,无论是本地化部署还是云端服务,都能轻松应对。
二、IDA Pro MCP工具概述
在逆向工程领域,MCP协议正在重构安全工具与AI模型的协作范式。该工具通过以下方式提升分析效率:
- 语义桥梁:建立二进制数据与大语言模型的通用交互语言
- 操作抽象:将反编译、交叉引用等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工具安装
-
安装Python 3.11+环境,安装 IDA Pro 8.3或者IDA Pro 9
-
配置 MCP 服务器,部署IDA 插件:
pip install git+https://github.com/mrexodia/ida-pro-mcp
ida-pro-mcp --install
- 重启IDA Pro后,在Edit > Plugins列表确认"IDA Pro MCP"是否存在
- 此时,可以打开 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:\Users\test\Desktop\entry_language.elf
模块名: entry_language.elf
基地址: 0x400000
大小: 0x2010b8 字节
MD5: 7f24336a9475b4a6a79086f29ec0949a
SHA256: 8c481c589e9f95acbfdc20b54f5965017604a4c149dd72ec6bde55a5ea2a11bc
CRC32: 0x54f3155e
文件大小: 0x18b0 字节
如果需要进一步分析或操作该文件,请告诉我!
0x3 深入提问,继续分析
DeepSeek能成功分析到目标文件后,通过提示词调用MCP工具进行自动化分析、解题:
你需要进一步需要进一步分析或操作该文件,这是一个密码验证题,输入一个字符串,程序验证对错,输入错误的password错误会报错“Incorrect password!”,需要输入正确的password通过验证。你现在需要通过分析得到正确的password,你可以使用MCP工具检索信息,这个分析过程按照以下策略:
- 你的工作路径是C:\Users\test\Desktop\,重点关注的文件是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的正确值
调用大量ida-pro-内置的函数,自动化分析:
0x4 结果验证
花了4角1分钱的token ,把关键部分的代码分析出来了:
但是AI并没直接把算法成功逆向、跑出正确的password。经测试下来,效果感觉还有许多优化和进步的地方
或许后续在执行自动化分析二进制程序的时候,需要注意一下:
- 预处理:预处理好混淆代码,亦或先用 math-mcp 等工具先处理等容易产生幻觉的场景(如算法)
- 互动式执行分析任务:尽量分步执行分析的提示词,根据分析结果的反馈,调整下一步分析的提示词,让每一步都贴合实际情况
- 防幻觉机制:设置"如无明确证据需标注[推测]"
或许下次可以换个大模型来自动化分析,比如 Claude 3.7 Sonnet 。
五、结语
目前,MCP的加持,确实已经让自动化分析变得更加快捷、有效,能快速得到分析中需要的一些关键点。通过MCP协议,IDA Pro正在从静态分析工具转型为智能安全中台。这种变革不仅提升单个逆向任务的效率,更重要的是构建起人机协同的新型研究范式。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。