找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3697

积分

0

好友

508

主题
发表于 昨天 18:00 | 查看: 5| 回复: 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 提供了针对 5ireClaude DesktopCline 的配置方法。对于 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抽屉灯实现自动开关
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2026-3-5 04:11 , Processed in 0.481399 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

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