英文 | 中文
这是一个为 x64dbg 实现的 Model Context Protocol (MCP) 服务器,通过 JSON-RPC 2.0 接口支持远程调试。此插件允许外部应用程序和 AI 代理以编程方式与 x64dbg 调试器进行交互。
最简单的构建方式是使用提供的构建脚本:
# 克隆仓库
git clone https://github.com/SetsunaYukiOvO/x64dbg-mcp.git
cd x64dbg-mcp
# 运行构建脚本
.\build.bat
# 脚本会:
# 1. 自动检测或安装 vcpkg
# 2. 下载依赖项(nlohmann_json)
# 3. 使用正确的设置配置 CMake
# 4. 使用 Visual Studio 构建
# 5. 可选地安装到 x64dbg 插件目录
构建脚本选项:
.\build.bat # 发布版构建(默认)
.\build.bat --debug # 调试版构建带符号
.\build.bat --clean # 清理后重新构建
.\build.bat --help # 显示所有选项
如果你更喜欢手动控制:
git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg
C:\vcpkg\bootstrap-vcpkg.bat
setx VCPKG_ROOT "C:\vcpkg"
git clone https://github.com/SetsunaYukiOvO/x64dbg-mcp.git
cd x64dbg-mcp
cmake -B build -G "Visual Studio 17 2022" -A x64 ^
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build --config Release
build\bin\Release\x64dbg_mcp.dp64(大约 445 KB)cp build/bin/Release/x64dbg_mcp.dp64 /path/to/x64dbg/plugins/
mkdir -p /path/to/x64dbg/plugins/x64dbg-mcp
cp config.json /path/to/x64dbg/plugins/x64dbg-mcp/
http://127.0.0.1:3000编辑 config.json 以定制设置:
{
"version": "1.0.1",
"server": {
"address": "127.0.0.1",
"port": 3000
},
"permissions": {
"allow_memory_write": true,
"allow_register_write": true,
"allow_script_execution": true,
"allow_breakpoint_modification": true
},
"logging": {
"enabled": true,
"level": "info",
"file": "x64dbg_mcp.log"
}
}
使用 HTTP 的 Python 客户端示例:
import requests
import json
class MCPClient:
def __init__(self, host='127.0.0.1', port=3000):
self.base_url = f"http://{host}:{port}"
self.request_id = 1
def call(self, method, params=None):
request = {
"jsonrpc": "2.0",
"id": self.request_id,
"method": method,
"params": params or {}
}
self.request_id += 1
response = requests.post(
f"{self.base_url}/rpc",
json=request,
headers={"Content-Type": "application/json"}
)
return response.json()
def subscribe_events(self):
"""订阅 SSE 事件"""
response = requests.get(
f"{self.base_url}/sse",
stream=True,
headers={"Accept": "text/event-stream"}
)
for line in response.iter_lines():
if line:
yield line.decode('utf-8')
# 使用
client = MCPClient()
print(client.call("initialize"))
print(client.call("tools/list"))
# 订阅调试事件
for event in client.subscribe_events():
print(f"事件: {event}")
在 VS Code 设置或 MCP 客户端配置中配置:
{
"mcpServers": {
"x64dbg": {
"url": "http://127.0.0.1:3000",
"transport": "sse"
}
}
}
system.info - 获取服务器信息system.ping - 测试连接system.methods - 列出所有可用的方法debug.run - 继续执行debug.pause - 暂停执行debug.step_into - 单步进入指令debug.step_over - 单步跳过指令debug.step_out - 单步跳出函数debug.get_state - 获取当前调试状态debug.run_to - 运行到特定地址debug.restart - 重新开始调试会话debug.stop - 停止调试register.get - 读取单个寄存器register.set - 写入寄存器值register.list - 列出所有寄存器register.get_batch - 读取多个寄存器memory.read - 读取内存区域memory.write - 写入内存区域memory.search - 搜索内存模式memory.get_info - 获取内存区域信息memory.enumerate - 列出所有内存区域memory.allocate - 分配内存memory.free - 释放已分配的内存breakpoint.set - 设置断点breakpoint.delete - 删除断点breakpoint.enable - 启用断点breakpoint.disable - 禁用断点breakpoint.toggle - 切换断点状态breakpoint.list - 列出所有断点breakpoint.get - 获取断点详情breakpoint.delete_all - 删除所有断点breakpoint.set_condition - 设置断点条件breakpoint.set_log - 设置断点日志消息breakpoint.reset_hitcount - 重置断点命中次数disassembly.at - 在地址处反汇编disassembly.range - 反汇编地址范围disassembly.function - 反汇编整个函数symbol.resolve - 解析符号到地址symbol.from_address - 从地址获取符号symbol.search - 按模式搜索符号symbol.list - 列出所有符号symbol.modules - 列出已加载模块symbol.set_label - 设置符号标签symbol.set_comment - 设置符号注释symbol.get_comment - 获取符号注释module.list - 列出所有已加载模块module.get - 获取模块信息module.get_main - 获取主模块thread.list - 列出所有线程thread.get_current - 获取当前线程thread.get - 获取线程信息thread.switch - 切换到线程thread.suspend - 暂停线程thread.resume - 恢复线程thread.get_count - 获取线程数stack.get_trace - 获取栈跟踪stack.read_frame - 读取栈帧stack.get_pointers - 获取栈指针(RSP, RBP)stack.is_on_stack - 检查地址是否在栈上完整的方法签名和示例,请参见源代码中的内联文档或使用 system.methods API 调用。
插件分为四层:
config.json 中启用写入权限欢迎贡献!请:
该项目采用 MIT 许可证 - 详见 LICENSE 文件。
注意:这是实验性软件。请自行承担风险。在关键应用中使用前,请始终在一个安全环境中进行测试。