侧边栏壁纸
博主头像
铁永杰的博客 博主等级

行动起来,活在当下

  • 累计撰写 30 篇文章
  • 累计创建 2 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

大模型MCP之小试牛刀

Administrator
2025-05-17 / 0 评论 / 0 点赞 / 11 阅读 / 0 字

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 的客户端

安装

  1. 打开 VS Code。

  2. 点击左侧边栏的“扩展”图标 (Extensions)。

  3. 在搜索框中输入 ClineRooCode

初始化配置

安装完成后,通常需要进行初始化配置,主要是设置您的大模型 API Key。

  1. 打开 Cline 或 RooCode 的设置界面(通常可以通过点击插件图标或使用命令面板 Ctrl+Shift+P / Cmd+Shift+P 搜索插件名称找到)。

  2. 选择“使用自己的 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

根据 LocationFiles 中的相对路径,拼接出 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


0

评论区