# X64Dbg MCP Server
<div align="center">
<img src="logo.png" alt="X64Dbg MCP Logo" width="200">
</div>
X64Dbg的Model Context Protocol服务器,用于AI辅助逆向分析和调试。
## 功能特性
<details>
<summary>点击展开查看完整功能列表(共40+项)</summary>
- ✅ 执行x64dbg调试命令
- ✅ 获取寄存器信息
- ✅ 获取模块列表
- ✅ 设置/删除/启用/禁用断点
- ✅ 条件断点支持
- ✅ 读取/写入内存
- ✅ 内存保护属性管理
- ✅ 反汇编代码
- ✅ 单步调试(Step Over/Into)
- ✅ 继续/暂停执行
- ✅ 获取堆栈信息
- ✅ 搜索内存模式
- ✅ 脚本执行结果解析
- ✅ 日志输出捕获
- ✅ 内存转储功能
- ✅ 符号解析
- ✅ 硬件断点支持
- ✅ 数据断点(监视点)
- ✅ 进程附加/分离
- ✅ 代码补丁管理
- ✅ 代码注入(Shellcode注入)
- ✅ DLL注入/卸载
- ✅ 反调试绕过
- ✅ 异常处理设置
- ✅ 文件操作(加载/保存)
- ✅ 内存比较和填充
- ✅ 地址计算和格式化工具
- ✅ 寄存器值修改(单个/批量)
- ✅ 断点命中计数
- ✅ 书签管理
- ✅ 线程操作(切换/挂起/恢复/上下文)
- ✅ 执行跟踪
- ✅ 内存分配/释放
- ✅ 表达式计算
- ✅ 批量操作(断点/内存)
- ✅ 结构体查看
- ✅ 脚本管理
- ✅ 配置管理
- ✅ 性能分析
</details>
## 安装
### 1. 安装Python依赖
```bash
pip install -r requirements.txt
```
或使用uv(推荐):
```bash
uv pip install -r requirements.txt
```
### 2. 配置x64dbg路径
#### 方法一:自动检测(推荐)
系统会自动检测以下常见路径:
- `D:\baiyajin-code\x64dbg\release\x64\x64dbg.exe` (开发环境)
- `C:\Program Files\x64dbg\release\x64\x64dbg.exe` (标准安装)
- `C:\Program Files (x86)\x64dbg\release\x64\x64dbg.exe` (32位系统)
- `%USERPROFILE%\x64dbg\release\x64\x64dbg.exe` (用户目录)
- `C:\x64dbg\release\x64\x64dbg.exe` (其他常见位置)
- `D:\x64dbg\release\x64\x64dbg.exe` (其他常见位置)
- 以及其他常见位置
如果x64dbg安装在上述位置之一,**无需额外配置**,系统会自动检测并使用。
#### 方法二:手动配置
如果x64dbg安装在其他位置,编辑 `config.py`,修改以下行:
```python
DEFAULT_X64DBG_PATH = r"你的x64dbg路径\x64dbg.exe"
DEFAULT_X64DBG_PLUGIN_DIR = r"你的x64dbg路径\plugins"
```
例如:
```python
DEFAULT_X64DBG_PATH = r"D:\MyTools\x64dbg\release\x64\x64dbg.exe"
DEFAULT_X64DBG_PLUGIN_DIR = r"D:\MyTools\x64dbg\release\x64\plugins"
```
#### 方法三:环境变量
设置环境变量 `X64DBG_PATH` 指向x64dbg.exe的完整路径:
**Windows PowerShell:**
```powershell
$env:X64DBG_PATH = "D:\baiyajin-code\x64dbg\release\x64\x64dbg.exe"
```
**Windows CMD:**
```cmd
set X64DBG_PATH=D:\baiyajin-code\x64dbg\release\x64\x64dbg.exe
```
**永久设置(系统环境变量):**
1. 右键"此电脑" -> "属性" -> "高级系统设置" -> "环境变量"
2. 在"用户变量"或"系统变量"中添加:
- 变量名:`X64DBG_PATH`
- 变量值:`D:\baiyajin-code\x64dbg\release\x64\x64dbg.exe`
#### 验证配置
启动MCP服务器后,如果x64dbg未安装或路径错误,工具调用时会返回清晰的错误提示,指导用户如何配置。MCP服务器本身可以正常启动,只有在调用工具时才会提示需要配置x64dbg路径。
### 3. 安装x64dbg Python插件
确保x64dbg已安装Python插件(Python插件通常是x64dbg自带的)。
## 使用方法
### 在Cursor中配置(推荐)
Cursor支持通过项目配置文件或全局配置文件来设置MCP服务器。
#### 方法一:项目级配置(推荐)
1. **创建配置文件目录**
在项目根目录下创建 `.cursor` 文件夹(如果不存在):
```bash
mkdir .cursor
```
2. **创建MCP配置文件**
在 `.cursor` 文件夹中创建 `mcp.json` 文件,添加以下配置:
```json
{
"mcpServers": {
"x64dbg-mcp": {
"command": "python",
"args": [
"${workspaceFolder}/main.py"
],
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
}
}
}
```
**使用uv(推荐)**:
```json
{
"mcpServers": {
"x64dbg-mcp": {
"command": "uv",
"args": [
"run",
"python",
"${workspaceFolder}/main.py"
],
"cwd": "${workspaceFolder}"
}
}
}
```
3. **重启Cursor**
保存配置文件后,重启Cursor IDE以使配置生效。
4. **验证配置**
- 打开Cursor设置(`Ctrl+,` 或 `Cmd+,`)
- 导航到 `Features` > `MCP` 或 `设置` > `功能` > `MCP`
- 确认 `x64dbg-mcp` 服务器显示为已启用状态(绿色指示器)
#### 方法二:全局配置
1. **找到Cursor配置目录**
- **Windows**: `%APPDATA%\Cursor\User\globalStorage\mcp.json` 或 `%USERPROFILE%\.cursor\mcp.json`
- **macOS**: `~/Library/Application Support/Cursor/User/globalStorage/mcp.json` 或 `~/.cursor/mcp.json`
- **Linux**: `~/.config/Cursor/User/globalStorage/mcp.json` 或 `~/.cursor/mcp.json`
2. **编辑全局配置文件**
打开或创建 `mcp.json` 文件,添加以下配置(请将路径替换为你的实际项目路径):
```json
{
"mcpServers": {
"x64dbg-mcp": {
"command": "python",
"args": [
"D:\\baiyajin-code\\x64dbg-mcp\\main.py"
],
"env": {
"PYTHONPATH": "D:\\baiyajin-code\\x64dbg-mcp"
}
}
}
}
```
**使用uv(推荐)**:
```json
{
"mcpServers": {
"x64dbg-mcp": {
"command": "uv",
"args": [
"run",
"python",
"D:\\baiyajin-code\\x64dbg-mcp\\main.py"
],
"cwd": "D:\\baiyajin-code\\x64dbg-mcp"
}
}
}
```
3. **重启Cursor**
保存配置文件后,重启Cursor IDE。
#### 配置说明
- **`command`**: 运行MCP服务器的命令(`python` 或 `uv`)
- **`args`**: 传递给命令的参数数组
- `${workspaceFolder}`: Cursor会自动替换为当前工作区路径
- 全局配置中需要使用绝对路径
- **`env`**: 环境变量(可选)
- `PYTHONPATH`: 确保Python能找到项目模块
- **`cwd`**: 工作目录(使用uv时推荐设置)
#### 使用MCP工具
配置完成后,在Cursor的AI对话中可以直接使用x64dbg工具:
- "获取当前寄存器值"
- "在地址0x401000设置断点"
- "反汇编0x401000地址的代码"
- "读取0x401000地址的内存"
### 在Claude Desktop中配置
1. 打开Claude Desktop配置文件(Windows: `%APPDATA%\Claude\claude_desktop_config.json`)
2. 添加MCP服务器配置:
```json
{
"mcpServers": {
"x64dbg-mcp": {
"command": "python",
"args": [
"D:\\baiyajin-code\\wx\\x64dbg-mcp\\main.py"
],
"env": {
"PYTHONPATH": "D:\\baiyajin-code\\wx\\x64dbg-mcp"
}
}
}
}
```
或使用uv(推荐,会自动处理依赖):
```json
{
"mcpServers": {
"x64dbg-mcp": {
"command": "uv",
"args": [
"run",
"python",
"D:\\baiyajin-code\\wx\\x64dbg-mcp\\main.py"
],
"cwd": "D:\\baiyajin-code\\wx\\x64dbg-mcp"
}
}
}
```
**注意**:请将路径 `D:\\baiyajin-code\\wx\\x64dbg-mcp` 替换为你的实际项目路径。
### 在Cherry Studio中配置
1. 打开Cherry Studio设置
2. 添加MCP服务器:
- **名称**: X64Dbg-MCP-Server
- **命令**: `python main.py` 或 `uv run python main.py`
- **工作目录**: `D:\baiyajin-code\wx\x64dbg-mcp`
- **环境变量**: 可选,设置PYTHONPATH
## 工作原理
### 命令执行方式
由于x64dbg主要通过GUI和插件系统工作,本MCP服务采用以下方式:
1. **自动执行(推荐)**:MCP服务尝试通过x64dbg的Python插件API自动执行脚本。如果x64dbg正在运行且支持API调用,命令将自动执行。
2. **脚本文件方式**:如果自动执行失败,MCP服务会创建Python脚本文件到x64dbg的plugins目录
3. **手动加载**:在x64dbg中通过 `File -> Script -> Load` 加载脚本执行命令(仅在自动执行不可用时需要)
### 脚本文件位置
脚本文件保存在:`[x64dbg安装目录]/release/x64/plugins/mcp_temp/`
### 自动执行机制
- 当x64dbg的Python插件环境可用时,脚本会自动执行
- 如果不在x64dbg环境中,脚本会保存到文件,等待手动加载
- 所有命令默认启用自动执行,可通过参数控制
## 项目结构
项目采用模块化设计,遵循单一职责原则,每个文件不超过200行。
```
Tools/
├── core/ # 核心基础模块
│ ├── base_controller.py # 基础控制器(命令执行)
│ ├── script_executor.py # 脚本执行器
│ └── result_parser.py # 结果解析器
├── modules/ # 功能模块(按功能分类)
│ ├── register.py # 寄存器操作
│ ├── breakpoint.py # 断点管理
│ ├── memory.py # 内存操作(组合模块)
│ ├── memory_basic.py # 内存基础操作
│ ├── memory_advanced.py # 内存高级操作
│ ├── thread.py # 线程管理
│ ├── process.py # 进程管理
│ ├── code_analysis.py # 代码分析
│ ├── code_modification.py # 代码修改
│ ├── debug_control.py # 调试控制
│ ├── information.py # 信息获取
│ ├── advanced.py # 高级功能
│ ├── utility.py # 实用工具(组合模块)
│ ├── utility_bookmark.py # 书签操作
│ └── utility_management.py # 管理功能(文件/脚本/配置)
├── registry/ # 工具注册模块
│ └── tool_registry.py # MCP工具注册
├── utils/ # 共享工具模块
│ └── address_utils.py # 地址工具函数
└── x64dbg_controller.py # 主控制器(整合所有模块)
```
### 设计原则
1. **单一职责**:每个模块只负责一个功能领域
2. **文件大小限制**:每个文件不超过200行(部分组合模块除外)
3. **组合模式**:使用组合而非继承,便于扩展和维护
4. **向后兼容**:保持原有接口不变,确保现有代码正常工作
### 模块说明
- **core/**:提供基础功能,所有模块都依赖这些核心组件
- **modules/**:功能模块,每个模块封装一类相关功能
- **registry/**:负责将功能模块注册为MCP工具
- **utils/**:提供通用的工具函数,供各模块使用
## 可用工具
<details>
<summary>点击展开查看所有可用工具(共88个工具)</summary>
### x64dbg_execute_command
执行任意x64dbg调试命令
### x64dbg_get_registers
获取当前所有寄存器值
### x64dbg_get_modules
获取已加载的模块列表
### x64dbg_set_breakpoint
在指定地址设置断点
### x64dbg_remove_breakpoint
删除指定地址的断点
### x64dbg_read_memory
读取指定地址的内存内容
### x64dbg_write_memory
向指定地址写入内存数据
### x64dbg_disassemble
反汇编指定地址的代码
### x64dbg_step_over
单步执行(跳过函数调用)
### x64dbg_step_into
单步进入(进入函数调用)
### x64dbg_continue
继续执行程序
### x64dbg_pause
暂停程序执行
### x64dbg_get_stack
获取当前堆栈信息
### x64dbg_search_memory
在内存中搜索指定模式
### x64dbg_get_debugger_status
获取调试器实时状态(是否调试中、运行状态、当前PID/TID、地址等)
### x64dbg_set_breakpoint_conditional
设置带条件的断点(例如:当eax==0x100时触发)
### x64dbg_dump_memory
将内存转储到文件(支持最大10MB)
### x64dbg_resolve_symbol
解析符号名称到内存地址(例如:MessageBoxA, kernel32.CreateFile)
### x64dbg_get_threads
获取线程列表
### x64dbg_get_breakpoints
获取所有断点列表
### x64dbg_get_call_stack
获取调用栈信息
### x64dbg_get_segments
获取内存段信息
### x64dbg_get_strings
搜索字符串引用
### x64dbg_get_references
获取地址的交叉引用
### x64dbg_get_imports
获取导入函数列表
### x64dbg_get_exports
获取导出函数列表
### x64dbg_get_comments
获取注释信息
### x64dbg_get_labels
获取标签列表
### x64dbg_get_functions
获取函数列表
### x64dbg_enable_breakpoint
启用断点(如果断点被禁用)
### x64dbg_disable_breakpoint
禁用断点(不断点删除,只是临时禁用)
### x64dbg_capture_output
捕获命令执行的实际输出(增强版命令执行,包含输出解析)
### x64dbg_get_logs
获取x64dbg日志输出
### x64dbg_set_memory_protection
设置内存保护属性(可读、可写、可执行等)
### x64dbg_get_memory_protection
获取内存保护属性
### x64dbg_set_hardware_breakpoint
设置硬件断点(支持执行、写入、读取、读写断点)
### x64dbg_remove_hardware_breakpoint
删除硬件断点
### x64dbg_set_watchpoint
设置数据断点(监视点),用于监控内存访问
### x64dbg_remove_watchpoint
删除数据断点(监视点)
### x64dbg_attach_process
附加到正在运行的进程进行调试
### x64dbg_detach_process
分离当前调试的进程(不断点终止进程)
### x64dbg_apply_patch
应用代码补丁(修改代码)
### x64dbg_remove_patch
移除代码补丁(恢复原始代码)
### x64dbg_get_patches
获取所有补丁列表
### x64dbg_inject_code
注入代码(Shellcode)到目标进程
### x64dbg_inject_dll
注入DLL到目标进程
### x64dbg_eject_dll
卸载DLL(从目标进程中移除)
### x64dbg_bypass_antidebug
绕过反调试检测(修改PEB标志、绕过NtQuery等)
### x64dbg_set_exception_handler
设置异常处理(忽略/中断/记录特定异常)
### x64dbg_get_exception_info
获取当前异常信息
### x64dbg_load_file
加载文件到调试器
### x64dbg_save_memory_to_file
保存内存到文件
### x64dbg_compare_memory
比较两处内存内容(查找差异)
### x64dbg_fill_memory
填充内存(用指定值填充内存区域)
### x64dbg_calculate_address
计算地址(基址+偏移)
### x64dbg_format_address
格式化地址(十六进制/十进制转换)
### x64dbg_set_register
设置单个寄存器值
### x64dbg_set_registers
批量设置寄存器值
### x64dbg_get_breakpoint_hit_count
获取断点命中计数(断点被触发的次数)
### x64dbg_reset_breakpoint_hit_count
重置断点命中计数
### x64dbg_add_bookmark
添加地址书签
### x64dbg_remove_bookmark
删除地址书签
### x64dbg_get_bookmarks
获取所有书签列表
### x64dbg_goto_bookmark
跳转到书签地址
### x64dbg_switch_thread
切换当前线程
### x64dbg_suspend_thread
挂起线程
### x64dbg_resume_thread
恢复线程
### x64dbg_get_thread_context
获取线程上下文
### x64dbg_start_trace
开始执行跟踪
### x64dbg_stop_trace
停止执行跟踪
### x64dbg_get_trace_records
获取跟踪记录
### x64dbg_allocate_memory
在目标进程中分配内存
### x64dbg_free_memory
释放分配的内存
### x64dbg_get_memory_region_info
获取内存区域信息
### x64dbg_evaluate_expression
计算表达式(支持寄存器、内存地址、常量等)
### x64dbg_batch_set_breakpoints
批量设置断点
### x64dbg_batch_remove_breakpoints
批量删除断点
### x64dbg_batch_read_memory
批量读取内存
### x64dbg_view_structure
查看结构体数据(PEB、TEB等)
### x64dbg_save_script
保存脚本到文件
### x64dbg_load_script
从文件加载脚本
### x64dbg_get_script_history
获取脚本执行历史
### x64dbg_save_config
保存当前调试配置
### x64dbg_load_config
加载调试配置
### x64dbg_list_configs
获取所有配置列表
### x64dbg_start_profiling
开始性能分析
### x64dbg_stop_profiling
停止性能分析
### x64dbg_get_profiling_results
获取性能分析结果
</details>
## 注意事项
1. **x64dbg必须已安装**:确保x64dbg已正确安装并配置路径
2. **Python插件**:x64dbg需要支持Python插件(通常自带)
3. **权限问题**:确保有权限在x64dbg插件目录创建文件
4. **自动执行**:新版本支持自动执行脚本,如果x64dbg正在运行且支持API,命令会自动执行
5. **手动操作**:如果自动执行失败,某些操作可能需要手动在x64dbg中加载脚本文件
6. **调试模式**:建议在调试模式下使用,查看详细日志
7. **Cursor版本**:确保使用支持MCP的Cursor版本(通常需要较新版本)
8. **结果解析**:新版本支持自动解析脚本执行结果,获取实际输出内容
## 故障排除
<details>
<summary>点击展开查看故障排除指南</summary>
### 问题:找不到x64dbg路径
**解决方案**:
1. 检查 `config.py` 中的路径配置
2. 确保x64dbg已正确安装
3. 手动设置正确的路径
### 问题:无法创建脚本文件
**解决方案**:
1. 检查x64dbg插件目录的写入权限
2. 确保目录存在
3. 检查磁盘空间
### 问题:命令执行失败
**解决方案**:
1. 确保x64dbg已启动并加载了目标程序
2. 检查命令语法是否正确
3. 查看x64dbg的日志输出
### 问题:Cursor中MCP服务器未显示
**解决方案**:
1. 检查 `mcp.json` 文件格式是否正确(JSON格式)
2. 确认文件路径正确(项目级:`.cursor/mcp.json`,全局级:用户配置目录)
3. 重启Cursor IDE
4. 检查Cursor设置中的MCP功能是否已启用
5. 查看Cursor的输出面板(`View` > `Output`)查看MCP相关错误信息
### 问题:Python路径错误
**解决方案**:
1. 确保Python已正确安装并在PATH中
2. 使用完整路径指定Python解释器:
```json
{
"mcpServers": {
"x64dbg-mcp": {
"command": "C:\\Python\\python.exe",
"args": ["${workspaceFolder}/main.py"]
}
}
}
```
3. 如果使用虚拟环境,确保激活虚拟环境或使用虚拟环境的Python路径
</details>
## 更新日志
查看完整的提交历史:[Git提交记录](https://github.com/baiyajin/x64dbg-mcp/commits/main)
<details>
<summary>点击展开查看最近更新</summary>
- ✅ **docs: 移除已完成的开发计划部分** - 清理README,移除已完成的功能列表
- ✅ **chore: 优化FastMCP日志输出配置** - 减少日志输出,优化启动体验
- ✅ **feat: 添加智能x64dbg路径检测** - 支持自动检测x64dbg安装路径,未安装时提供友好提示
- ✅ **docs: 在README中添加项目logo** - 添加项目logo展示
- ✅ **修复: 解决异常消息中的中文乱码问题** - 修复编码问题,确保中文正确显示
- ✅ **修复: 解决日志乱码问题** - 配置UTF-8编码,解决日志输出乱码
- ✅ **修复: 解决MCP协议JSON解析错误问题** - 修复f-string语法错误
- ✅ **重构: 拆分大文件使其符合200行限制** - 模块化重构,遵循单一职责原则
- ✅ **配置: 添加Cursor MCP服务器配置文件** - 添加MCP服务器配置示例
</details>
## 许可证
本项目采用MIT许可证。
## 贡献
欢迎提交Issue和Pull Request!
## 支持项目
如果这个项目对你有帮助,欢迎通过微信赞赏支持开发者继续改进项目!
<div align="center">
<img src="wechat_reward.jpg" alt="微信赞赏码" width="300">
<p><em>你的鼓励是我改BUG的动力 💪</em></p>
</div>
## 技术支持
遇到问题需要帮助?欢迎加入付费技术支持咨询交流QQ群,与开发者和其他用户交流!
<div align="center">
<img src="qq_group.jpg" alt="付费技术支持咨询交流QQ群" width="300">
<p><em>扫码加入QQ群,获取技术支持 💬</em></p>
</div>
## 相关链接
- [x64dbg官网](https://x64dbg.com/)
- [Model Context Protocol文档](https://modelcontextprotocol.io/)
- [FastMCP文档](https://github.com/jlowin/fastmcp)
- [Cursor MCP文档](https://docs.cursor.com/context/mcp)
- [Git提交历史](https://github.com/baiyajin/x64dbg-mcp/commits/main)
- [GitHub仓库](https://github.com/baiyajin/x64dbg-mcp)