x64dbg MCP
Servidor MCP local de Windows para x64dbg/x32dbg: lanzamiento y adjuntado protegidos, puntos de interrupción, escrituras de memoria verificadas, captura en tiempo de ejecución, volcados de PE y evidencia de IDA usando SHA-256 + RVA.
Documentación
https://github.com/user-attachments/assets/07b813eb-4175-4f14-b21b-602548906398
x64dbg MCP le da a un cliente MCP control protegido de una sesión real de x64dbg o x32dbg. Convierte la depuración en vivo en un flujo de trabajo de ingeniería inversa reproducible: vincular el proceso exacto, observar hechos de tiempo de ejecución, recuperar artefactos útiles, validarlos de forma independiente y entregar la evidencia a IDA.
Qué hace
- Inicia o se adjunta con argumentos, directorio de trabajo, entorno y política de procesos secundarios.
- Lee y cambia registros, memoria, hilos, módulos y puntos de interrupción propios.
- Captura evidencia de instrucciones, API, heap, excepciones y bloques básicos.
- Encuentra valores de comparación, cadenas de tiempo de ejecución, llamadas indirectas, OEP e importaciones.
- Produce volcados PE de memoria, minidumps, importaciones corregidas y exportaciones parcheadas.
- Intercambia hechos de tiempo de ejecución con IDA usando una identidad portátil de SHA-256 de archivo + RVA de módulo en lugar de direcciones de tiempo de ejecución inestables.
Grupos de herramientas
| Flujo de trabajo | Herramientas representativas | Resultado |
|---|---|---|
| Inicio y vinculación | InitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpoint | Proceso reproducible e identidad de sesión |
| Control en vivo | RegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpoint | Ejecución controlada, memoria y cambios de puntos de interrupción |
| Evidencia de tiempo de ejecución | RunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCapture | Rutas de instrucciones, llamadas API/heap, excepciones y bloques ejecutados |
| Recuperación de claves y unpack | SearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIAT | Comparaciones, cadenas, OEP y candidatos de importación en tiempo de ejecución |
| Volcado y reparación | WriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFile | Volcados reproducibles y artefactos PE verificados de forma independiente |
| Entrega de evidencia a IDA | ExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRva | Comentarios, etiquetas, cobertura y hechos de API direccionados por hash/RVA |
El catálogo completo, los parámetros y los contratos de respuesta están en la
referencia de herramientas. El perfil compacto mantiene
cortas las respuestas habituales orientadas al modelo; detail="full" y el perfil
full exponen la evidencia completa cuando se necesita.
Configuración rápida
Descargue el paquete combinado de Windows desde Releases. Contiene tanto los plugins nativos como el backend de Python:
plugins\MCPx64dbg.dp64para x64dbgplugins\MCPx64dbg.dp32para x32dbgruntime\srcyruntime\requirements.txt- sondas de runtime administrado x64/x86 autocontenidas en
runtime\tools\bin\managed_probe
Cierre x64dbg/x32dbg. Abra PowerShell en la carpeta que contiene el ZIP descargado y ejecute el bloque siguiente. Pregunta dónde guardar el paquete MCP y dónde ya está instalado x64dbg; no se asume ninguna unidad ni directorio de instalación. Mantenga abierta la misma ventana de PowerShell para los comandos específicos del cliente a continuación.
$Archive = Get-ChildItem -File .\x64dbg-mcp-windows-*.zip |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
if (-not $Archive) { throw 'The x64dbg MCP release ZIP was not found in this folder.' }
$BundleRoot = Read-Host 'Absolute folder where x64dbg MCP should be extracted'
$X64dbgRoot = Read-Host 'Absolute folder containing the x64 and x32 x64dbg folders'
$BundleRoot = [IO.Path]::GetFullPath(
[Environment]::ExpandEnvironmentVariables($BundleRoot.Trim()))
$X64dbgRoot = (Resolve-Path -LiteralPath (
[Environment]::ExpandEnvironmentVariables($X64dbgRoot.Trim()))).Path
if (-not (Test-Path -LiteralPath (Join-Path $X64dbgRoot 'x64\x64dbg.exe'))) {
throw "x64dbg.exe was not found under $X64dbgRoot\x64"
}
if (-not (Test-Path -LiteralPath (Join-Path $X64dbgRoot 'x32\x32dbg.exe'))) {
throw "x32dbg.exe was not found under $X64dbgRoot\x32"
}
Expand-Archive -LiteralPath $Archive.FullName -DestinationPath $BundleRoot -Force
Copy-Item (Join-Path $BundleRoot 'plugins\MCPx64dbg.dp64') `
(Join-Path $X64dbgRoot 'x64\plugins\MCPx64dbg.dp64') -Force
Copy-Item (Join-Path $BundleRoot 'plugins\MCPx64dbg.dp32') `
(Join-Path $X64dbgRoot 'x32\plugins\MCPx64dbg.dp32') -Force
$RuntimeRoot = Join-Path $BundleRoot 'runtime'
Set-Location $RuntimeRoot
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
$PythonExe = (Resolve-Path .\.venv\Scripts\python.exe).Path
$Launcher = (Resolve-Path .\src\mcp_stdio_launcher.py).Path
[pscustomobject]@{
PythonExe = $PythonExe
Launcher = $Launcher
X64dbgRoot = $X64dbgRoot
}
Codex
Agregue el servidor a ~\.codex\config.toml. Reemplace los tres valores entre
corchetes angulares con las rutas absolutas impresas por el bloque de
configuración. Las cadenas entre comillas simples de TOML conservan las
barras invertidas de Windows tal como están escritas.
[mcp_servers.x64dbg]
command = '<PythonExe>'
args = ['<Launcher>']
startup_timeout_sec = 90
[mcp_servers.x64dbg.env]
X64DBG_ROOT = '<X64dbgRoot>'
X64DBG_MCP_TOOL_PROFILE = 'compact'
Para el inicio normal del objetivo, llame a InitDebuggee directamente con la
ruta del EXE. Detecta x86/x64, inicia el depurador correspondiente desde
X64DBG_ROOT, espera el bridge y abre el objetivo. No se requiere una
verificación previa separada de BridgeHello ni una búsqueda manual de la
ruta del depurador.
Verificación de instalación opcional: inicie x64dbg o x32dbg y verifique el bridge:
& $PythonExe (Join-Path $RuntimeRoot 'src\x64dbg.py') GetDebuggerPluginStatus
GetScyllaHideStatus.installed y integrationReady describen el backend
InjectorCLI/HookLibrary de MCP. guiPluginPresent describe solo el plugin
opcional de GUI de x64dbg; no es necesario para la inyección MCP.
ScyllaHide es opcional: las herramientas de inicio usan use_scyllahide="off" por
defecto, y auto también omite la inyección. Use force con un
perfil explícito cuando sea necesario. El backend CLI prepara un INI privado
junto al inyector y apunta al PID exacto. Su configuración de compatibilidad
desactiva NtContinueHook y KillAntiAttach juntos para evitar el bloqueo de
continuación reproducido; el resultado informa estas anulaciones. Esto no
garantiza que cada perfil de terceros sea compatible con cada objetivo o
compilación de Windows.
Claude Code
Agregue el mismo servidor stdio a Claude Code con el ámbito de usuario. Este comando usa las rutas seleccionadas por el bloque de configuración en lugar de incrustar una ubicación específica de la máquina:
$ClaudeServer = [ordered]@{
command = $PythonExe
args = @($Launcher)
env = [ordered]@{
X64DBG_ROOT = $X64dbgRoot
X64DBG_MCP_TOOL_PROFILE = 'compact'
}
} | ConvertTo-Json -Depth 4 -Compress
claude mcp add-json x64dbg $ClaudeServer --scope user
claude mcp list
Alternativamente, ejecute claude mcp add e ingrese el mismo comando,
argumentos y entorno de forma interactiva.
Claude Desktop y otros clientes stdio
Use la configuración JSON de MCP de su cliente. Para Claude Desktop en Windows,
el archivo es %APPDATA%\Claude\claude_desktop_config.json. Genere un bloque JSON
con las rutas reales seleccionadas arriba:
$ClientConfig = [ordered]@{
mcpServers = [ordered]@{
x64dbg = [ordered]@{
command = $PythonExe
args = @($Launcher)
env = [ordered]@{
X64DBG_ROOT = $X64dbgRoot
X64DBG_MCP_TOOL_PROFILE = 'compact'
}
}
}
}
$ClientConfig | ConvertTo-Json -Depth 6
Cursor, VS Code MCP, Windsurf y otros clientes stdio usan el mismo
contrato command/args/env; solo difiere la
ubicación de su archivo JSON.
Compilar desde el código fuente
git clone https://github.com/rison1337/x64dbgMCP.git
Set-Location x64dbgMCP
cmake -S . -B build -G "Visual Studio 17 2022" -DX64DBG_DOWNLOAD_SDK=ON
cmake --build build --target all_plugins --config Release
$X64dbgRoot = (Resolve-Path -LiteralPath (Read-Host 'x64dbg installation folder')).Path
Copy-Item build\build64\Release\MCPx64dbg.dp64 `
(Join-Path $X64dbgRoot 'x64\plugins\MCPx64dbg.dp64') -Force
Copy-Item build\build32\Release\MCPx64dbg.dp32 `
(Join-Path $X64dbgRoot 'x32\plugins\MCPx64dbg.dp32') -Force
Entrega de fusión IDA Pro MCP
El flujo de trabajo de IDA está diseñado para el fork rison1337/ida-pro-mcp-fusion. x64dbg MCP no pretende ser un reemplazo de IDA y no muta silenciosamente una base de datos no relacionada. En su lugar:
ExportRuntimeEvidenceescribe un documento de evidencia versionado que contiene el SHA-256 del objetivo, la arquitectura, los RVA de módulos, los bloques ejecutados, las llamadas API, los comentarios, las etiquetas y las funciones.ResolveModuleRvay el coordinador normalizan las direcciones en vivo a la identidad de imagen estática.tools/ida_evidence_coordinator.pyvalida que la base de datos Fusion abierta tenga el mismo SHA-256 y arquitectura, luego crea acciones deterministas deset_name,set_comments,define_funcy comentarios de cobertura/API.- Fusion aplica esas acciones en su worker de IDA y puede conservar el resultado en su caché SQLite persistente para análisis posteriores de múltiples binarios.
Esta es una entrega explícita de artefacto/protocolo, por lo que sigue siendo inspeccionable y reintentable. Consulte el coordinador y el README de Fusion para el worker del lado de IDA y el modelo de caché.
Documentación
CI cubre el contrato de Python y ambas arquitecturas de plugins nativos. El flujo de trabajo de lanzamiento también verifica el servidor stdio empaquetado y las sondas administradas. Las compuertas de depurador en vivo se ejecutan localmente y conservan informes JSON; consulte Contribuciones. Analice binarios no confiables dentro de una VM desechable.
GPL-3.0. Basado en x64dbgMCP por Sam W (Wasdubya). Consulte NOTICE para la atribución.
x64dbg MCP le da a un cliente MCP control protegido de una sesión real de x64dbg o x32dbg. Convierte la depuración en vivo en un flujo de trabajo de ingeniería inversa reproducible: vincular el proceso exacto, observar hechos de tiempo de ejecución, recuperar artefactos útiles, validarlos de forma independiente y entregar la evidencia a IDA.
Qué hace
- Inicio y attach con argumentos, cwd, entorno y política de procesos secundarios.
- Registros, memoria, hilos, módulos y puntos de interrupción con control de propietario.
- Evidencia de instruction-, API-, heap-, exception-trace y basic-block.
- Búsqueda de comparaciones, cadenas de tiempo de ejecución, llamadas indirectas, OEP e importaciones.
- PE desde memoria, minidump, corrección de IAT y exportación del archivo parcheado.
- Intercambio con IDA mediante un vínculo portátil de SHA-256 de archivo + module RVA, no un VA de tiempo de ejecución aleatorio.
Grupos de herramientas
| Etapa | Ejemplos de herramientas MCP | Qué se obtiene |
|---|---|---|
| Inicio y vinculación | InitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpoint | Proceso reproducible e identidad de sesión precisa |
| Control | RegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpoint | Run/step controlado, memoria y puntos de interrupción |
| Evidencia de tiempo de ejecución | RunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCapture | Rutas de instrucciones, API/heap, excepciones y bloques ejecutados |
| Búsqueda de claves y unpack | SearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIAT | Comparaciones, cadenas, OEP y candidatos de IAT en tiempo de ejecución |
| Volcado y restauración | WriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFile | Volcados repetibles y artefactos PE verificados |
| Transferencia a IDA | ExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRva | Comentarios, etiquetas, cobertura y hechos de API por hash/RVA |
El catálogo completo, los parámetros y los contratos de respuesta están en la
referencia de herramientas. El perfil compact hace
que las respuestas habituales sean cortas; detail="full" y el perfil
full devuelven toda la evidencia.
Configuración rápida
Descargue de Releases un único archivo de Windows. Dentro ya están ambos plugins nativos y el backend de Python:
plugins\MCPx64dbg.dp64para x64dbgplugins\MCPx64dbg.dp32para x32dbgruntime\srcyruntime\requirements.txt- sondas de runtime administrado x64/x86 autocontenidas en
runtime\tools\bin\managed_probe
Cierre x64dbg/x32dbg. Abra PowerShell en la carpeta con el ZIP descargado y ejecute el bloque siguiente. Él mismo solicitará la carpeta para MCP y la ruta al x64dbg ya instalado: no se asume ningún disco ni ubicación de antemano. No cierre esta ventana de PowerShell hasta ejecutar los comandos para el cliente MCP elegido.
$Archive = Get-ChildItem -File .\x64dbg-mcp-windows-*.zip |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
if (-not $Archive) { throw 'Архив релиза x64dbg MCP не найден в этой папке.' }
$BundleRoot = Read-Host 'Полный путь к папке, куда распаковать x64dbg MCP'
$X64dbgRoot = Read-Host 'Полный путь к папке x64dbg, содержащей каталоги x64 и x32'
$BundleRoot = [IO.Path]::GetFullPath(
[Environment]::ExpandEnvironmentVariables($BundleRoot.Trim()))
$X64dbgRoot = (Resolve-Path -LiteralPath (
[Environment]::ExpandEnvironmentVariables($X64dbgRoot.Trim()))).Path
if (-not (Test-Path -LiteralPath (Join-Path $X64dbgRoot 'x64\x64dbg.exe'))) {
throw "x64dbg.exe не найден в $X64dbgRoot\x64"
}
if (-not (Test-Path -LiteralPath (Join-Path $X64dbgRoot 'x32\x32dbg.exe'))) {
throw "x32dbg.exe не найден в $X64dbgRoot\x32"
}
Expand-Archive -LiteralPath $Archive.FullName -DestinationPath $BundleRoot -Force
Copy-Item (Join-Path $BundleRoot 'plugins\MCPx64dbg.dp64') `
(Join-Path $X64dbgRoot 'x64\plugins\MCPx64dbg.dp64') -Force
Copy-Item (Join-Path $BundleRoot 'plugins\MCPx64dbg.dp32') `
(Join-Path $X64dbgRoot 'x32\plugins\MCPx64dbg.dp32') -Force
$RuntimeRoot = Join-Path $BundleRoot 'runtime'
Set-Location $RuntimeRoot
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
$PythonExe = (Resolve-Path .\.venv\Scripts\python.exe).Path
$Launcher = (Resolve-Path .\src\mcp_stdio_launcher.py).Path
[pscustomobject]@{
PythonExe = $PythonExe
Launcher = $Launcher
X64dbgRoot = $X64dbgRoot
}
Codex
Agregue el servidor a ~\.codex\config.toml. Reemplace los tres valores entre
corchetes angulares con las rutas absolutas que imprimió el bloque de
configuración. En las cadenas entre comillas simples de TOML, las barras
invertidas de Windows no necesitan duplicarse.
[mcp_servers.x64dbg]
command = '<PythonExe>'
args = ['<Launcher>']
startup_timeout_sec = 90
[mcp_servers.x64dbg.env]
X64DBG_ROOT = '<X64dbgRoot>'
X64DBG_MCP_TOOL_PROFILE = 'compact'
Para el inicio normal del objetivo, llame directamente a InitDebuggee con
la ruta al EXE. La herramienta determina x86/x64, inicia el depurador adecuado
desde X64DBG_ROOT, espera el bridge y abre el objetivo. No se necesita una
verificación separada con BridgeHello ni una búsqueda manual de la ruta a
x64dbg.
Verificación de instalación opcional: inicie x64dbg o x32dbg y verifique el bridge:
& $PythonExe (Join-Path $RuntimeRoot 'src\x64dbg.py') GetDebuggerPluginStatus
Los campos GetScyllaHideStatus.installed y integrationReady se refieren al backend
basado en InjectorCLI, HookLibrary y profile INI. guiPluginPresent informa
solo sobre el plugin de GUI opcional de x64dbg; para la inyección MCP no se
requiere.
ScyllaHide se activa explícitamente: las herramientas de inicio usan
use_scyllahide="off" por defecto, y auto también omite la inyección.
Si es necesario, use force con el perfil elegido. El backend CLI
crea un INI separado junto al inyector y pasa el PID exacto. Para eliminar el
bloqueo reproducido al continuar, desactiva NtContinueHook junto con
KillAntiAttach e informa estos cambios en el resultado. La compatibilidad de
las demás configuraciones del perfil depende del objetivo y de Windows.
Claude Code
Agregue el mismo servidor stdio a Claude Code con el ámbito de usuario. El comando usa las rutas elegidas arriba, no una ubicación de otra computadora:
$ClaudeServer = [ordered]@{
command = $PythonExe
args = @($Launcher)
env = [ordered]@{
X64DBG_ROOT = $X64dbgRoot
X64DBG_MCP_TOOL_PROFILE = 'compact'
}
} | ConvertTo-Json -Depth 4 -Compress
claude mcp add-json x64dbg $ClaudeServer --scope user
claude mcp list
O ejecute claude mcp add e ingrese los mismos command, args y env de forma
interactiva.
Claude Desktop y otros clientes stdio
Use la configuración JSON de MCP de su cliente. En Claude Desktop en Windows,
esto es %APPDATA%\Claude\claude_desktop_config.json. Genere un JSON con las rutas realmente elegidas:
$ClientConfig = [ordered]@{
mcpServers = [ordered]@{
x64dbg = [ordered]@{
command = $PythonExe
args = @($Launcher)
env = [ordered]@{
X64DBG_ROOT = $X64dbgRoot
X64DBG_MCP_TOOL_PROFILE = 'compact'
}
}
}
}
$ClientConfig | ConvertTo-Json -Depth 6
Cursor, VS Code MCP, Windsurf y otros clientes stdio usan el mismo
contrato command/args/env; solo difiere la ruta al archivo JSON.
Compilación desde el código fuente
git clone https://github.com/rison1337/x64dbgMCP.git
Set-Location x64dbgMCP
cmake -S . -B build -G "Visual Studio 17 2022" -DX64DBG_DOWNLOAD_SDK=ON
cmake --build build --target all_plugins --config Release
$X64dbgRoot = (Resolve-Path -LiteralPath (Read-Host 'Папка установки x64dbg')).Path
Copy-Item build\build64\Release\MCPx64dbg.dp64 `
(Join-Path $X64dbgRoot 'x64\plugins\MCPx64dbg.dp64') -Force
Copy-Item build\build32\Release\MCPx64dbg.dp32 `
(Join-Path $X64dbgRoot 'x32\plugins\MCPx64dbg.dp32') -Force
Sincronización con IDA Pro MCP Fusion
La integración está diseñada específicamente para el fork rison1337/ida-pro-mcp-fusion. x64dbg MCP no reemplaza a IDA ni escribe en una base de datos aleatoria:
ExportRuntimeEvidenceguarda un JSON versionado con SHA-256 del objetivo, arquitectura, module RVA, bloques ejecutados, llamadas a API, labels, comments y funciones.ResolveModuleRvay el coordinador traducen las direcciones de runtime a coordenadas de la imagen estática.tools/ida_evidence_coordinator.pyverifica el SHA-256 y la arquitectura de la base Fusion abierta y construye acciones deterministasset_name,set_comments,define_funcy comentarios de coverage/API.- Fusion aplica las acciones en su worker de IDA y puede guardar el resultado en la caché persistente SQLite para los siguientes estudios multi-binario.
Esto es un handoff de artifact/protocol explícito, verificable y repetible, no una comunicación oculta a través de VA inestables. Detalles: coordinator y README Fusion.
Documentación
CI verifica el contrato de Python y los plugins nativos de ambas arquitecturas. El flujo de release también verifica el servidor stdio y las sondas gestionadas desde el archivo compilado. Las comprobaciones en vivo del debugger se ejecutan localmente y guardan informes JSON; consulte participación en el desarrollo. Analice binarios desconocidos en una VM desechable.
GPL-3.0. El proyecto se basa en x64dbgMCP Sam W (Wasdubya). Atribución: NOTICE.