找回密码
立即注册
搜索
发回帖 发新帖

6696

积分

0

好友

845

主题
发表于 2026-3-4 18:00:20 | 查看: 1333| 回复: 0

工欲善其事,必先利其器。在大语言模型(LLM)快速发展的今天,从 ChatGPT 到 AutoGPT,再到 Agent、MCP 与 Skill,AI 工具生态已极大提升了生产效率,并在众多 CTF 竞赛中展现了其强大潜力。本文将介绍如何利用模型上下文协议(MCP),为常用的逆向工程软件集成 AI 能力,从而辅助分析工作。

Part I:AI 与 MCP 基础

何为 AI?

从本质上看,AI 模型可以理解为一个复杂的数学函数(这是一种非常简化的理解)。

多项式公式示意图

其中,x 可以是一个向量(而不仅仅是一个数字),n 则可以理解为模型参数的数量。通过大量的样本训练,我们就能确定数列 {a_i} 的值,从而在输入 x 后直接根据公式得到输出结果。

我们常听说的大语言模型有多少多少“参数”,指的就是有多少个 a。例如,DeepSeek R1 满血版就拥有 6710 亿(671 Billion)个参数。

模型上下文协议(MCP)

模型上下文协议(Model Context Protocol,MCP)由 Anthropic 于 2024 年 11 月底推出,是一种旨在统一大模型与外部数据源、工具之间通信的开放标准。有了 MCP,即使模型本身不支持 Function Call,也能够调用外部工具。因此,我们需要一个 MCP 客户端来作为大语言模型与你的应用程序(即 MCP 服务端)之间的信息传递桥梁。

MCP 客户端与服务端架构图

如何使用 MCP

网站 https://www.pulsemcp.com/clients 搜集了各种可用的 MCP 客户端。我个人习惯使用名为 5ire 的客户端。

MCP 客户端列表网页截图

注意:客户端更新后可能需要重新添加 MCP 工具。

5ire 设置界面截图

在“服务商”中填写你的 API Key。我使用的是 DeepSeek API,因其费用相对便宜。当然,如果你能使用 GPT-4 等模型则更佳。

5ire 服务商选择界面

DeepSeek API 配置界面

我在 24 年年底测试时,使用 LMStudio 搭配 5ire 成功实现了本地 7B 参数的 DeepSeek V3 模型的 MCP 调用,不过运行速度较慢,因此我的 5ire 客户端版本一直未更新。

在 5ire 的“工具市场”中可以找到并添加许多现成的 MCP 服务。

5ire 工具管理界面

5ire 工具市场搜索界面

可能需要提前全局安装 Python 的 uv 或 JavaScript 的 nodejs 环境。

5ire 工具环境提示

5ire 工具配置与开关

时间查询工具对话示例

编写简单的 MCP 服务

借助现成的框架,编写一个 MCP 服务并不困难。最简单的莫过于使用 Python 的 fastmcp 库。

from fastmcp import FastMCP
from datetime import datetime
import platform
import time

# 创建 MCP 实例
mcp = FastMCP("Local Time Service")

@mcp.tool()
def get_local_time() -> dict:
    """
    获取当前计算机的本地时间信息
    """
    now = datetime.now()

    return {
        "local_time": now.strftime("%Y-%m-%d %H:%M:%S"),
        "timestamp": int(now.timestamp()),
        "timezone": time.tzname,
        "system": platform.system(),
        "node": platform.node()
    }

if __name__ == "__main__":
    mcp.run()

在 5ire 中配置此本地服务(指向你保存上述脚本的目录)。

本地 MCP 服务配置 JSON

配置成功后,即可在对话中调用自定义的时间查询工具。

调用自定义时间工具对话示例

Part II:逆向工程工具集成实践

IDA Pro

该插件需要使用 IDA 的 Python API 进行操作,因此首先需要激活 IDA 的 Python 环境,确保能够正常运行 IDAPython 脚本。

Python 安装目录文件列表

然后,可以使用 idapyswitch.exe 切换 IDA 所使用的 Python 版本。

idapyswitch.exe --force-path .\python313\python3.dll

按照项目 README 文件进行安装:

pip uninstall ida-pro-mcp
pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip
ida-pro-mcp --install

安装后,将 C:\Users\xxx\AppData\Roaming\Hex-Rays\IDA Pro\plugins 目录下的 ida_mcp 文件夹和 ida_mcp.py 文件,剪切到包含 ida.exe 的文件夹下的 plugins 目录中。

在 5ire 中的配置命令如下(请根据你的实际路径修改):

python C:\Develop\Python\python3.14.2\Lib\site-packages\ida_pro_mcp\server.py --ida-rpc http://127.0.0.1:13337

5ire 中配置 IDA Pro MCP 服务

使用时,在 IDA Pro 中通过 Edit -> Plugins -> MCP 启动服务。

IDA Pro 插件菜单中启动 MCP

IDA Pro MCP 服务启动成功终端输出

最后,在 5ire 中即可向 AI 助手提问关于当前分析程序的问题。

向 AI 询问 IDA 分析中的函数列表

Ghidra

Ghidra 是美国国家安全局(NSA)出品的一款完全开源的逆向工程框架。其项目地址为: https://github.com/NationalSecurityAgency/ghidra 。笔者最初使用它是因为当时 IDA 对 ARM 等异构指令集的分析支持还不够完善,而 Ghidra 的反编译效果更佳(不过现在 IDA 在这方面也已迎头赶上)。

下载后运行 ghidraRun.bat 即可启动。Ghidra 使用 Java 编写,因此支持跨平台运行,但需要配置 Java 环境,目前要求 JDK 21 及以上版本。

Ghidra 启动时提示需要 JDK 21+

MCP 插件的安装很简单:下载发布包并解压得到 GhidraMCP-1-4.zip,然后在 Ghidra 中直接安装。

Ghidra 安装扩展菜单

安装扩展时可能出现的版本不匹配提示

重启 Ghidra,在已打开分析项目的窗口,通过 File -> Configure -> Developer 勾选启用 GhidraMCPPlugin。

Ghidra 配置工具界面

GhidraMCP 插件详细信息

该插件的 README 提供了针对 5ire、Claude Desktop 和 Cline 的配置方法。对于 5ire,配置命令类似如下(请使用绝对路径):

python /ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py

5ire 中配置 Ghidra MCP 服务

配置完成后,即可让 AI 助手分析 Ghidra 中当前加载的程序。

AI 分析 Ghidra 中加载的 CTF 程序

x64dbg

相比于初学者常用的、仅支持 32 位程序的 OllyDbg,x64dbg 提供了更优秀的界面和反汇编架构,是进行 Windows 平台逆向和调试的利器。它同样是一款开源的安全工具,项目地址为: https://github.com/x64dbg/x64dbg 。

软件安装不再赘述。安装 MCP 插件的方法是:下载发布包,解压后将插件文件(dp64 对应 x64dbg)放置到 <x64dbg安装目录>\release\x64\plugins\ 文件夹内。

在 5ire 中的配置非常简单,指向解压出来的 Python 脚本即可。

5ire 中配置 x64dbg MCP 服务

配置好后,AI 助手即可查询调试状态,例如寄存器的值。

AI 查询 x64dbg 中 RAX 寄存器的值

WinDBG

WinDBG 可谓是 Windows 平台用户态和内核态调试的终极工具,历史悠久且由微软官方出品。安装方法可以参考其官方文档: https://learn.microsoft.com/zh-cn/windows-hardware/drivers/debugger/ 。

安装 MCP 模块只需要一条命令:

pip install mcp-windbg

启动服务也很方便:

python -m mcp_windbg

可能需要设置存储符号文件的环境变量 _NT_SYMBOL_PATH。在 5ire 中的配置 JSON 示例如下:

{
  "id": "ab168ec4-6efc-4513-b8cb-1f54b65c354a",
  "lebel": "WinDBG-MCP",
  "description": "-",
  "type": "local",
  "command": "python",
  "arguments": [
    "-m",
    "mcp_windbg"
   ],
  "env": {
    "_NT_SYMBOL_PATH": "SRV*C:\\$Symbols$*https://msdl.microsoft.com/download/symbols"
   },
  "approval_policy": "always",
  "is_active": true
}

需要注意的是,当前这个 MCP 服务主要是为分析 .dmp 转储文件而设计的。

AI 分析 WinDBG 加载的 DMP 文件崩溃原因

总结与展望

通过 MCP 协议,我们可以将强大的 AI 语言模型与专业的逆向工程工具深度结合。这不仅能辅助分析人员快速理解程序结构、查询关键信息,还能在动态调试时提供实时反馈,显著提升逆向分析的效率和深度。随着 人工智能 与协议生态的进一步发展,此类“AI+工具”的工作流将成为安全研究领域的常态。

对于逆向工程、二进制安全感兴趣的开发者,可以关注 安全/渗透/逆向 相关的技术动态,而实现这些 MCP 服务端则离不开扎实的 Python 编程能力。希望本文的实践指南能为你打开一扇新的大门,欢迎在 云栈社区 交流更多技术心得。




上一篇:Vercel CLI发布AI代理技能:一句话自动配置全栈架构
下一篇:红外反射感应技术解析:单片机MCU如何驱动Yeelight抽屉灯实现自动开关
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-11-2 00:11 , Processed in 0.078051 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表