当逆向工程遇上大语言模型,从崩溃分析到漏洞挖掘的效率将迎来质的飞跃。x64dbg-mcp 通过 MCP 协议将 x64dbg 的全部调试能力暴露给 AI,让 AI 像逆向工程师一样操控调试器。
一、前言
x64dbg 是 Windows 平台最流行的开源调试器,几乎每个安全从业者都用过。而随着大语言模型(LLM)的发展,”AI + 逆向工程”正在成为新的趋势。 项目通过 MCP(Model Context Protocol)协议,将 x64dbg 的调试能力暴露给 AI 客户端,让 AI 可以像人一样操控调试器——设置断点、读内存、单步执行、分析函数,全都用自然语言完成。
本文将从安装配置、架构原理到实战场景,带你全面了解和使用这个插件。
二、什么是 x64dbg-mcp?
x64dbg-mcp 是一个 x64dbg/x32dbg 原生插件,它通过 MCP 协议将调试器的全部能力暴露给 AI 代理。插件以 .dp64 / .dp32 DLL 的形式加载到 x64dbg 中,内嵌一个 HTTP 服务器,通过 JSON-RPC 2.0 + SSE 协议与外部 AI 客户端通信。
通过它,AI 能够:
-
控制调试执行(运行、暂停、单步)
-
读写寄存器和内存
-
管理断点(软件/硬件/内存断点)
-
反汇编代码、分析函数
-
解析符号、查看导入导出表
-
Dump 模块、检测壳、寻找 OEP
-
执行 x64dbg 脚本命令
三、安装与配置
3.1 前置条件
-
Windows 10/11(x64)
-
x64dbg(build 2023+)
-
Claude Code CLI(配置好环境)
3.2 安装插件
方式一:下载预编译文件(推荐)
-
前往 下载最新版本的
x64dbg_mcp.dp64 -
将文件复制到 x64dbg 的插件目录:
copy x64dbg_mcp.dp64 <x64dbg-path>\release\x64\plugins\
方式二:从源码编译
需要 Visual Studio 2022、CMake 3.15+、vcpkg:
git clone https://github.com/SetsunaYukiOvO/x64dbg-mcp.git
cd x64dbg-mcp
.\build.bat
编译产物在 dist/ 目录,复制到插件目录即可。
3.3 验证安装
-
打开 x64dbg
-
菜单栏出现 Plugins → MCP Server,说明插件加载成功
-
点击 Plugins → MCP Server → Start MCP HTTP Server 启动服务
-
服务器默认监听
http://127.0.0.1:3000

3.4 连接 Claude Code
编辑配置文件 ~/.claude.json,在 mcpServers 节点中追加以下配置:
{
"mcpServers": {
"x64Dbg": {
"type": "http",
"url": "http://127.0.0.1:3000"
}
}
}

重启 Claude Code,MCP 即可自动完成连接。
3.5 配置选项
插件首次加载时会自动在插件目录下生成 x64dbg-mcp/config.json:
| 配置项 | 默认值 | 说明 |
|---|---|---|
| server.address | 127.0.0.1 |
服务监听地址 |
| server.port | 3000 |
服务监听端口 |
| permissions.allow_memory_write | true |
允许 AI 写入内存 |
| permissions.allow_register_write | true |
允许 AI 写入寄存器 |
| permissions.allow_script_execution | true |
允许 AI 执行脚本 |
| permissions.allowed_methods | 14 个通配符 | 允许调用的方法白名单 |
| features.auto_start_mcp_on_plugin_load | true |
插件加载时自动启动服务 |
| features.enable_heartbeat | true |
启用心跳检测 |
| timeout.request_timeout_ms | 30000 |
请求超时时间 |
提示:也可以通过 Plugins → MCP Server → Edit Config 打开 GUI 配置编辑器修改配置。
四、架构原理
插件采用清晰的四层架构:
┌───────────────────────────────────────────────────┐ │ AI 客户端 (Claude Code) │ └─────────────────────┬─────────────────────────────┘ │ SSE / HTTP (JSON-RPC 2.0) ▼ ┌───────────────────────────────────────────────────┐ │ 通信层 (Communication) │ │ MCPHttpServer · ConnectionManager │ │ HeartbeatMonitor · MessageTransport │ ├───────────────────────────────────────────────────┤ │ 协议层 (Protocol) │ │ MethodDispatcher · MCPToolRegistry (79 工具) │ │ PermissionChecker · ConfigManager │ ├───────────────────────────────────────────────────┤ │ 业务层 (Business) │ │ DebugController · RegisterManager │ │ MemoryManager · BreakpointManager │ │ DisassemblyEngine · SymbolResolver │ │ StackManager · ThreadManager · DumpManager │ ├───────────────────────────────────────────────────┤ │ 插件层 (Plugin) │ │ x64dbg Plugin SDK · 事件回调 │ └───────────────────────────────────────────────────┘
关键设计:
-
地址解析统一:所有地址参数都支持符号名(如
kernel32.CreateFileW)、寄存器名(如RIP)和 x64dbg 表达式 -
双架构支持:通过条件编译同时支持 x64 和 x86 调试器
-
权限白名单:通过通配符模式控制方法调用权限,默认开放 14 类方法
-
通信端点:
POST /rpc(JSON-RPC 请求)、GET /sse(事件流)、GET /(状态检查)
五、AI 可以操控 x64dbg 做什么?
插件通过 MCP 协议暴露了 79 个工具、7+8 个资源、10 个提示词模板:
5.1 调试控制
| 工具 | 功能 |
|---|---|
debug_init |
启动新的调试会话 |
debug_run |
继续执行 |
debug_pause |
暂停执行 |
debug_step_into |
单步进入 |
debug_step_over |
单步越过 |
debug_step_out |
单步跳出函数 |
debug_run_to |
运行到指定地址 |
debug_restart |
重启调试会话 |
debug_stop |
停止调试 |
debug_get_state |
获取当前调试状态 |
5.2 寄存器操作
| 工具 | 功能 |
|---|---|
register_get |
读取单个寄存器 |
register_set |
写入寄存器值 |
register_list |
列出所有寄存器 |
register_get_batch |
批量读取寄存器(含 GPR、SSE、AVX) |
5.3 内存操作
| 工具 | 功能 |
|---|---|
memory_read |
读取内存区域 |
memory_write |
写入内存区域 |
memory_search |
搜索内存模式(支持 hex 格式) |
memory_get_info |
获取内存区域信息 |
memory_enumerate |
列出所有内存区域 |
memory_allocate |
分配内存 |
memory_free |
释放内存 |
5.4 断点管理
| 工具 | 功能 |
|---|---|
breakpoint_set |
设置断点(软件/硬件/内存) |
breakpoint_delete |
删除断点 |
breakpoint_enable/disable |
启用/禁用断点 |
breakpoint_list |
列出所有断点 |
breakpoint_set_condition |
设置条件断点 |
breakpoint_set_log |
设置日志断点 |
breakpoint_reset_hitcount |
重置命中计数 |
5.5 反汇编与分析
| 工具 | 功能 |
|---|---|
disassembly_at |
反汇编指定地址 |
disassembly_range |
反汇编地址范围 |
disassembly_function |
反汇编整个函数 |
symbol_resolve |
符号解析为地址 |
symbol_from_address |
地址获取符号 |
module_get_exports |
获取导出表 |
module_get_imports |
获取导入表 |
xref_get |
交叉引用分析 |
5.6 Dump 与脱壳
| 工具 | 功能 |
|---|---|
dump_module |
Dump 可执行模块(PE 重建) |
dump_analyze_module |
加壳检测与分析 |
dump_detect_oep |
OEP 检测 |
dump_memory_region |
Dump 任意内存区域 |
5.7 其他工具
| 分类 | 工具 |
|---|---|
| 栈操作 | stack_get_trace、stack_read_frame、stack_get_pointers |
| 线程操作 | thread_list、thread_switch、thread_suspend、thread_resume |
| 脚本执行 | script_execute、script_execute_batch |
| 上下文快照 | context_get_snapshot、context_compare_snapshots |
| 补丁管理 | patch_list、patch_restore |
| 汇编器 | assembler_assemble |
六、实战场景
6.1 场景一:崩溃分析
当程序崩溃时,直接让 AI 帮你分析崩溃原因:
使用 x64Dbg MCP:”程序在地址 0x401234 处发生了访问违例,帮我分析崩溃原因”
AI 会自动:读取当前寄存器状态、获取调用栈、反汇编崩溃点附近的代码、检查内存访问的合法性,给出崩溃根因和修复建议。
6.2 场景二:自动化脱壳
使用 x64Dbg MCP:”这个程序用了 UPX 壳,帮我自动脱壳”
AI 会调用 dump_analyze_module 确认壳类型,dump_detect_oep 寻找 OEP,然后单步执行到 OEP,最后 dump_module 转储脱壳后的程序。
6.3 场景三:CTF 逆向
使用 x64Dbg MCP:”帮我在 check_serial 函数设置断点,分析注册码验证逻辑”
AI 调用 symbol_resolve 解析函数地址,breakpoint_set 设置断点,命中后读取参数和返回值,disassembly_function 反汇编完整函数,最终还原验证算法。
6.4 场景四:直接逆向
使用 x64Dbg MCP:”帮我把这个程序逆过来”
AI 会自动分析程序结构:识别主函数和关键逻辑、反汇编核心代码段、读取内存中的关键数据、追踪函数调用关系,最终给出完整的逆向分析结果和伪代码。

6.5 场景五:动态调试
使用 x64Dbg MCP:”帮我在 CreateFileW 下断点,监控程序打开的所有文件”
AI 调用 breakpoint_set 在 kernel32.CreateFileW 设置断点,每次命中时读取参数(文件路径、访问模式),记录所有文件操作,帮助你快速掌握程序的行为逻辑。

七、总结





