1.什么是MCP
MCP (Model Context Protocol) 是一种协议,旨在让 AI 模型能够更智能地理解和利用当前工作环境中的上下文信息。当您与 AI 对话时,支持 MCP 的客户端(或称为“载体”)会自动收集相关的上下文信息(例如当前打开的文件、选中的代码片段、项目结构等),并将其提供给 AI 模型。
早期使用大模型时,一个常见的挑战是如何有效地提供上下文。例如,如果您想让 AI 修改代码,仅仅告诉它“请修改我的代码”是远远不够的。一个更有效的方法是,将相关的头文件 (.h
)、源文件 (.c
, .cpp
等) 以及描述业务逻辑的代码片段都提供给 AI。这样,AI 才能更准确地理解您的意图并生成高质量的代码。
MCP 的目标就是自动化这个过程。它通过标准化上下文信息的收集和传输方式,让 AI 应用(如 VS Code 插件、独立客户端等)能够无缝地与 IDA Pro 这类专业工具集成,从而在逆向分析等复杂场景下发挥 AI 的最大潜力。
优秀的 AI 编程助手,如 Cursor,正是通过高效的上下文管理(包括向量化索引、上下文压缩等技术)实现了出色的代码理解和生成能力,从而获得了广泛应用。IDA Pro MCP 遵循了类似的理念,将 MCP 的能力带入了逆向工程领域。
2.如何使用MCP
2.1:准备大模型 API Key
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <DeepSeek API Key>" \
-d '{
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
"stream": false
}'
替换之后
curl https://api.deepseek.com/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer sk-dd9c6aef74f54c079c00f4db7ef0cd7e" -d '{
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
"stream": false
}'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 705 0 484 100 221 107 48 0:00:04 0:00:04 --:--:-- 156{"id":"7cdd1522-9ffa-44c3-bf4a-785715bd51c5","object":"chat.completion","created":1747105773,"model":"deepseek-chat","choices":[{"index":0,"message":{"role":"assistant","content":"Hello! 馃槉 How can I assist you today?"},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":11,"completion_tokens":11,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":11},"system_fingerprint":"fp_8802369eaa_prod0425fp8"}
充值之后响应如上,即已正常
2.2:选择并配置 MCP 客户端
一:vscode
Cline 和 RooCode 是两款支持 MCP 的 VS Code 插件,可以将 VS Code 作为 IDA Pro MCP 的客户端
安装
打开 VS Code。
点击左侧边栏的“扩展”图标 (Extensions)。
在搜索框中输入
Cline
或RooCode
。
初始化配置
安装完成后,通常需要进行初始化配置,主要是设置您的大模型 API Key。
打开 Cline 或 RooCode 的设置界面(通常可以通过点击插件图标或使用命令面板
Ctrl+Shift+P
/Cmd+Shift+P
搜索插件名称找到)。选择“使用自己的 API Key”(Use your own API key)。
2.3 ida配置
切换 IDA Pro 的 Python 环境
"F:\Program Files\IDA Professional 9.0\idapyswitch.exe" --force-path "C:\Users\PC\.conda\envs\python313\python3.dll"
安装ida-pro-mcp的Python包
"C:\Users\PC\.conda\envs\python313\python.exe" -m pip install --upgrade git+https://github.com/mrexodia/ida-pro-mcp
安装 MCP 插件到 IDA Pro
找到 ida-pro-mcp.exe
可执行文件的路径。可以使用 pip show -f ida-pro-mcp
命令查找。
"C:\Users\PC\.conda\envs\python313\python.exe" -m pip show -f ida-pro-mcp
根据 Location
和 Files
中的相对路径,拼接出 ida-pro-mcp.exe
的绝对路径。 示例: Location
: C:\Users\jiqiu2021\AppData\Local\Programs\Python\Python311\Lib\site-packages
相对路径: ..\..\Scripts\ida-pro-mcp.exe
安装命令
"C:\Users\PC\.conda\envs\python313\Scripts\ida-pro-mcp.exe" --install
遇到问题
F:\Program Files\IDA Professional 9.0\plugins\ida_feeds\ida_feeds.py: name 'IdaPluginForm' is not defined
Traceback (most recent call last):
File "F:\Program Files\IDA Professional 9.0\python\ida_idaapi.py", line 574, in IDAPython_ExecScript
exec(code, g)
~~~~^^^^^^^^^
File "F:/Program Files/IDA Professional 9.0/plugins/ida_feeds/ida_feeds.py", line 45, in <module>
class IdaMainWindow(IdaPluginForm):
^^^^^^^^^^^^^
NameError: name 'IdaPluginForm' is not defined
Database for file 'libtiger_tally.so' has been loaded.
Hex-Rays Decompiler plugin has been loaded (v9.0.0.240925)
The hotkeys are F5: decompile, Ctrl-F5: decompile all.
Please check the Edit/Plugins menu for more information.
F:\Program Files\IDA Professional 9.0\plugins\ida_feeds\ida_feeds.py: name 'IdaPluginForm' is not defined
Traceback (most recent call last):
File "F:\Program Files\IDA Professional 9.0\python\ida_idaapi.py", line 574, in IDAPython_ExecScript
exec(code, g)
~~~~^^^^^^^^^
File "F:/Program Files/IDA Professional 9.0/plugins/ida_feeds/ida_feeds.py", line 45, in <module>
class IdaMainWindow(IdaPluginForm):
^^^^^^^^^^^^^
NameError: name 'IdaPluginForm' is not defined
Hex-rays version 9.0.0.240925 has been detected, gooMBA plugin ready to use
F:\Program Files\IDA Professional 9.0\plugins\ida_feeds\ida_feeds.py: name 'IdaPluginForm' is not defined
Traceback (most recent call last):
File "F:\Program Files\IDA Professional 9.0\python\ida_idaapi.py", line 574, in IDAPython_ExecScript
exec(code, g)
~~~~^^^^^^^^^
File "F:/Program Files/IDA Professional 9.0/plugins/ida_feeds/ida_feeds.py", line 45, in <module>
class IdaMainWindow(IdaPluginForm):
^^^^^^^^^^^^^
NameError: name 'IdaPluginForm' is not defined
评论区