ESC
开源 2 分钟阅读

x64dbg-MCP Server:基于Zig的原生MCP插件,让AI助手通过HTTP控制x64dbg调试器

x64dbg-MCP Server是一个面向x64dbg的原生MCP(模型上下文协议)插件,通过HTTP暴露调试器全部功能,支持任意MCP兼容AI助手以编程方式控制调试器:设置断点、单步执行、读取内存、查看寄存器等。基于Zig编写,零依赖、单一二进制输出,可交叉编译x32/x64双架构。

来源:GitHub

x64dbg-MCP Server

基于MCP的x64dbg智能逆向工程方案。

Stars Version Downloads Language License Red Team Reverse Engineering Twitter

特性 • 安装 • 使用 • 工具 • 配置 • 构建 • 结构

x64dbg-MCP Server是x64dbg的原生MCP(模型上下文协议)插件,通过HTTP暴露调试器的完整功能。连接任意兼容MCP的AI助手,即可通过编程方式控制x64dbg:设置断点、单步执行代码、读取内存、转储寄存器等。

基于Zig构建——零依赖、单一二进制输出,可从任意宿主机交叉编译至x32和x64。无需.NET、无需Python、无需运行时——只需将插件放入x64dbg插件文件夹即可使用。

MCP 2024-11-05 —— 支持Streamable HTTP + SSE传输,JSON-RPC 2.0。

特性

  • 71个MCP工具: 完整的调试器控制——反汇编、单步、断点、内存分配、寄存器、模块、线程、调用栈、模式扫描、字符串提取、交叉引用、符号、书签、PE分析、OEP检测、模块转储、PEB/SEH检查、跟踪等。
  • 22个事件回调: 完整的调试器事件覆盖——初始化、停止、断点、异常、单步、附加/分离、DLL加载/卸载、线程等。
  • 零依赖: 纯原生插件,无需运行时或框架。
  • x32和x64: 单一代码库,一条命令即可构建两种架构。
  • 双传输: Streamable HTTP + SSE——兼容任何MCP客户端(新版和旧版)。
  • 配置对话框: 可从插件菜单更改IP/端口,保存时自动重启服务器。
  • 自动启动: 当x64dbg启动时,MCP服务器自动开始运行。
  • 交叉编译: 可从Linux、macOS或WSL构建Windows插件。

安装

下载最新版本或从源码构建:

  1. 将dist/的内容复制到x64dbg根目录(同时部署x32和x64)
  2. 启动x64dbg

MCP服务器会自动启动。默认端口:

  • x64: 0.0.0.0:9094
  • x32: 0.0.0.0:9095

使用

添加到MCP客户端配置(.mcp.json等):

Streamable HTTP(推荐):

{
  "mcpServers": {
    "x64dbg": {
      "type": "http",
      "url": "http://localhost:9094/"
    }
  }
}

SSE(旧版客户端):

{
  "mcpServers": {
    "x64dbg": {
      "type": "sse",
      "url": "http://localhost:9094/sse"
    }
  }
}

如果从WSL或远程机器连接,请使用主机的IP地址,并在配置对话框中设置绑定地址为0.0.0.0。

示例——AI辅助逆向工程会话:

您:    加载calc.exe并在入口点处下断点
AI: [调用LoadBinary、SetBreakpoint、run、WaitForPause]
        已加载calc.exe,在calc.exe的0x7FF7A1234000处命中断点

您:    当前寄存器是什么?
AI: [调用GetAllRegisters]
        RAX: 0x0, RCX: 0x7FF7A1234000, RDX: 0x1, ...

您:    读取当前指令指针处的64字节
AI: [调用ReadMemory]
        48 83 EC 28 E8 12 34 00 00 ...

您:    单步跳过接下来的3条指令并显示堆栈
AI: [调用StepOver x3、GetCallStack]
        已单步至0x7FF7A1234010,调用栈:...

工具

71个MCP工具覆盖完整的x64dbg调试工作流。

始终可用

工具描述
GetDebugState当前调试器状态、PID、指令指针
LoadBinary将可执行文件加载到调试器中
ExecuteDebuggerCommand运行任意x64dbg命令
ListCommandsByCategory列出可用的MCP工具
SearchForStrings在进程内存中搜索文本
GetEventLog最近N个调试器事件(异常、断点、DLL加载)
ClearEventLog清除事件日志
EvalExpression计算任意x64dbg表达式(地址、寄存器、算术)
AttachProcess附加到运行中的进程(按PID)
Echo返回输入

需要活动调试会话

工具描述
GetCurrentAddress当前EIP/RIP及标签和注释
Disassemble在地址处反汇编N条指令
DisassembleFunction按边界反汇编整个函数
ReadMemory进程内存的十六进制转储
WaitForPause阻塞直到目标暂停
run恢复执行(F9)
StepInto单步进入调用(F7)
StepOver单步跳过调用(F8)
StepOut运行直到返回(Ctrl+F9)
PauseDebug暂停目标(F12)
StopDebug终止调试会话
RestartDebug重启调试会话
SetBreakpoint在地址/符号处设置INT3断点
SetHardwareBreakpoint设置硬件断点(DR0-DR3,读/写/执行)
SetConditionalBreakpoint设置带条件表达式和可选日志的断点
EnableBreakpoint在给定地址处启用断点
DisableBreakpoint禁用断点但不删除
ToggleBreakpoint在启用和禁用之间切换断点
DeleteBreakpoint删除断点
DeleteAllBreakpoints删除所有断点(普通、硬件、内存)
ResetHitCount将断点命中计数器重置为零
ListBreakpoints列出所有活动断点
GetAllRegisters转储所有通用寄存器
SetRegister设置CPU寄存器值
GetCallStack当前线程调用栈
GetThreads列出所有线程及ID和指令指针
SwitchThread切换活动线程上下文
SuspendThread按线程ID挂起线程
ResumeThread恢复已挂起的线程
ListModules列出已加载模块及基址和大小
GetMemoryMap内存区域及地址、大小和保护属性
GetDumpableRegions列出已提交、可读的内存区域
AllocateMemory在目标进程中分配内存
FreeMemory释放目标进程中已分配的内存
WriteMemToAddress用十六进制字节修补内存
RestorePatches将所有补丁恢复为原始字节
Assemble在地址处汇编指令
CommentOrLabelAtAddress在反汇编中添加注释/标签
SetBookmark在地址处设置书签
DeleteBookmark删除书签
ListBookmarks列出所有书签
GetImports显示模块导入表
GetExports显示模块导出表
SearchSymbols搜索匹配模式的符号
ListSymbols列出模块的导出符号
GetPatches列出所有内存补丁
FindPattern使用??通配符扫描模块内存中的字节模式
GetStrings从模块内存中提取ASCII字符串
GetReferences查找对目标地址的CALL/JMP交叉引用
GetFunctions列出已分析函数及地址和标签
AnalyzeModulePE结构分析:节区、入口点、镜像大小
DetectOEP检测加壳可执行文件的原始入口点
DumpMemory将内存区域保存到磁盘文件
DumpModule将整个模块转储到文件
RunToAddress运行直到命中特定地址
TraceInto单步N条指令并记录地址+反汇编
FollowPointer解引用指针链N层深度
WatchExpressions在一次调用中计算多个表达式
GetSEHChain遍历结构化异常处理链(x32)
GetPEB读取进程环境块字段
GetArguments从堆栈/寄存器读取函数参数

配置

前往 插件 > x64dbg-MCP Server > 配置MCP服务器… 可更改绑定地址和端口。

  • 0.0.0.0 — 监听所有接口(用于WSL/远程访问)
  • 127.0.0.1 — 仅本地访问

更改立即生效——保存时服务器自动重启。配置持久化到x64dbg可执行文件旁边的mcp_config.json中。

构建

需要Zig 0.16-dev或更高版本。可在Windows、WSL、Linux或macOS上构建。

zig build -Doptimize=ReleaseSafe --prefix dist

输出镜像x64dbg的文件夹结构——将dist/的内容复制到x64dbg根目录即可同时部署两种架构:

dist/
├── x32/
│   └── plugins/
│       └── x64dbg-MCP-Server.dp32
└── x64/
    └── plugins/
        └── x64dbg-MCP-Server.dp64

项目结构

├── build.zig                     # 构建配置——x32 + x64交叉编译
├── build.zig.zon                 # 包清单
└── src/
    ├── main.zig                  # 插件入口、菜单、回调
    ├── core/
    │   ├── bridge.zig            # x64dbg SDK绑定(运行时解析)
    │   ├── config.zig            # Win32配置对话框和持久化
    │   └── mcp_server.zig        # HTTP服务器和JSON-RPC分发
    ├── mcp/
    │   ├── json.zig              # JSON写入器和解析器辅助函数
    │   └── tools.zig             # MCP工具定义和处理程序
    └── resources/
        └── icons.zig             # 嵌入式PNG图标数据

工作原理

插件在x64dbg启动时加载,在运行时从x64bridge.dll和x64dbg.dll解析调试器的API符号,然后在后台线程上启动HTTP服务器。MCP客户端通过HTTP连接并发送JSON-RPC请求以调用工具——每个工具直接映射到x64dbg SDK调用(断点、内存读取、命令执行等)。

无需轮询,无需外部进程——插件存在于x64dbg的地址空间内,可直接访问调试器API。


许可证

MIT。参见LICENSE。

由@duty1g用🖤制作