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 — dynamic reverse engineering

License: GPL v3 Windows x86 + x64 CI


English Русский

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 trabajoHerramientas representativasResultado
Inicio y vinculaciónInitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpointProceso reproducible e identidad de sesión
Control en vivoRegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpointEjecución controlada, memoria y cambios de puntos de interrupción
Evidencia de tiempo de ejecuciónRunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCaptureRutas de instrucciones, llamadas API/heap, excepciones y bloques ejecutados
Recuperación de claves y unpackSearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIATComparaciones, cadenas, OEP y candidatos de importación en tiempo de ejecución
Volcado y reparaciónWriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFileVolcados reproducibles y artefactos PE verificados de forma independiente
Entrega de evidencia a IDAExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRvaComentarios, 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.dp64 para x64dbg
  • plugins\MCPx64dbg.dp32 para x32dbg
  • runtime\src y runtime\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:

  1. ExportRuntimeEvidence escribe 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.
  2. ResolveModuleRva y el coordinador normalizan las direcciones en vivo a la identidad de imagen estática.
  3. tools/ida_evidence_coordinator.py valida que la base de datos Fusion abierta tenga el mismo SHA-256 y arquitectura, luego crea acciones deterministas de set_name, set_comments, define_func y comentarios de cobertura/API.
  4. 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.



English Русский

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

EtapaEjemplos de herramientas MCPQué se obtiene
Inicio y vinculaciónInitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpointProceso reproducible e identidad de sesión precisa
ControlRegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpointRun/step controlado, memoria y puntos de interrupción
Evidencia de tiempo de ejecuciónRunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCaptureRutas de instrucciones, API/heap, excepciones y bloques ejecutados
Búsqueda de claves y unpackSearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIATComparaciones, cadenas, OEP y candidatos de IAT en tiempo de ejecución
Volcado y restauraciónWriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFileVolcados repetibles y artefactos PE verificados
Transferencia a IDAExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRvaComentarios, 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.dp64 para x64dbg
  • plugins\MCPx64dbg.dp32 para x32dbg
  • runtime\src y runtime\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:

  1. ExportRuntimeEvidence guarda un JSON versionado con SHA-256 del objetivo, arquitectura, module RVA, bloques ejecutados, llamadas a API, labels, comments y funciones.
  2. ResolveModuleRva y el coordinador traducen las direcciones de runtime a coordenadas de la imagen estática.
  3. tools/ida_evidence_coordinator.py verifica el SHA-256 y la arquitectura de la base Fusion abierta y construye acciones deterministas set_name, set_comments, define_func y comentarios de coverage/API.
  4. 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.