x64dbg MCP

Servidor MCP local para Windows para x64dbg/x32dbg: inicialização e anexação protegidas, pontos de interrupção, gravações de memória verificadas, captura em tempo de execução, dumps de PE e evidências IDA usando SHA-256 + RVA.

Documentação

https://github.com/user-attachments/assets/07b813eb-4175-4f14-b21b-602548906398

x64dbg MCP — dynamic reverse engineering

License: GPL v3 Windows x86 + x64 CI


English Русский

O x64dbg MCP dá a um cliente MCP controle protegido de uma sessão real de x64dbg ou x32dbg. Ele transforma depuração ao vivo em um fluxo de trabalho de engenharia reversa reproduzível: vincule o processo exato, observe fatos de runtime, recupere artefatos úteis, valide-os de forma independente e entregue as evidências ao IDA.

O que ele faz

  • Inicia ou anexa com argumentos, diretório de trabalho, ambiente e política de processos filhos.
  • Lê e altera registradores, memória, threads, módulos e breakpoints de propriedade.
  • Captura evidências de instruções, API, heap, exceções e blocos básicos.
  • Encontra valores de comparação, strings de runtime, chamadas indiretas, OEPs e imports.
  • Produz dumps de PE da memória, minidumps, imports corrigidos e exports corrigidos.
  • Troca fatos de runtime com o IDA usando uma identidade portátil de SHA-256 do arquivo + RVA do módulo em vez de endereços de runtime instáveis.

Grupos de ferramentas

Fluxo de trabalhoFerramentas representativasResultado
Iniciar e vincularInitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpointProcesso reproduzível e identidade de sessão
Controle ao vivoRegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpointExecução controlada, memória e alterações de breakpoints
Evidências de runtimeRunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCaptureCaminhos de instruções, chamadas API/heap, exceções e blocos executados
Recuperação de chaves e unpackSearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIATComparações, strings, OEP e candidatos a imports de runtime
Dump e reparoWriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFileDumps reproduzíveis e artefatos PE verificados de forma independente
Entrega de evidências ao IDAExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRvaComentários, labels, cobertura e fatos de API endereçados por hash/RVA

O catálogo completo, parâmetros e contratos de resposta estão na referência de ferramentas. O perfil compacto mantém as respostas rotineiras voltadas ao modelo curtas; detail="full" e o perfil full expõem a evidência completa quando necessário.

Configuração rápida

Baixe o pacote Windows combinado de Releases. Ele contém tanto os plugins nativos quanto o backend Python:

  • plugins\MCPx64dbg.dp64 para x64dbg
  • plugins\MCPx64dbg.dp32 para x32dbg
  • runtime\src e runtime\requirements.txt
  • sondas de runtime gerenciado x64/x86 autocontidas em runtime\tools\bin\managed_probe

Feche o x64dbg/x32dbg. Abra o PowerShell na pasta que contém o ZIP baixado e execute o bloco abaixo. Ele pergunta onde manter o pacote MCP e onde o x64dbg já está instalado; nenhuma unidade ou diretório de instalação é presumido. Mantenha a mesma janela do PowerShell aberta para os comandos específicos do cliente abaixo.

$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

Adicione o servidor ao ~\.codex\config.toml. Substitua os três valores entre colchetes angulares pelos caminhos absolutos impressos pelo bloco de configuração. Strings entre aspas simples em TOML preservam as barras invertidas do Windows como 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 inicialização normal do alvo, chame InitDebuggee diretamente com o caminho do EXE. Ele detecta x86/x64, inicia o depurador correspondente de X64DBG_ROOT, aguarda a bridge e abre o alvo. Uma verificação prévia separada de BridgeHello ou busca manual do caminho do depurador não é necessária.

Verificação de instalação opcional: inicie o x64dbg ou x32dbg e verifique a bridge:

& $PythonExe (Join-Path $RuntimeRoot 'src\x64dbg.py') GetDebuggerPluginStatus

GetScyllaHideStatus.installed e integrationReady descrevem o backend InjectorCLI/HookLibrary do MCP. guiPluginPresent descreve apenas o plugin opcional da GUI do x64dbg; ele não é necessário para a injeção do MCP.

ScyllaHide é opcional: as ferramentas de inicialização usam use_scyllahide="off" por padrão, e auto também pula a injeção. Use force com um perfil explícito quando necessário. O backend CLI prepara um INI privado ao lado do injetor e visa o PID exato. Sua configuração de compatibilidade desativa NtContinueHook e KillAntiAttach juntos para evitar a falha de continuação reproduzida; o resultado relata essas substituições. Isso não garante que todo perfil de terceiros seja compatível com todo alvo ou build do Windows.

Claude Code

Adicione o mesmo servidor stdio ao Claude Code com o escopo do usuário. Este comando usa os caminhos selecionados pelo bloco de configuração em vez de incorporar uma localização específica da 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, execute claude mcp add e insira o mesmo comando, argumentos e ambiente interativamente.

Claude Desktop e outros clientes stdio

Use a configuração JSON do MCP do seu cliente. Para o Claude Desktop no Windows, o arquivo é %APPDATA%\Claude\claude_desktop_config.json. Gere um bloco JSON com os caminhos reais selecionados acima:

$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 e outros clientes stdio usam o mesmo contrato command/args/env; apenas a localização do arquivo JSON deles difere.

Compilar a partir do código-fonte

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 fusão IDA Pro MCP

O fluxo de trabalho do IDA é projetado para o fork rison1337/ida-pro-mcp-fusion. O x64dbg MCP não finge ser um substituto do IDA e não muta silenciosamente um banco de dados não relacionado. Em vez disso:

  1. ExportRuntimeEvidence escreve um documento de evidências versionado contendo o SHA-256 do alvo, arquitetura, RVAs de módulos, blocos executados, chamadas de API, comentários, labels e funções.
  2. ResolveModuleRva e o coordenador normalizam endereços ao vivo para a identidade de imagem estática.
  3. tools/ida_evidence_coordinator.py valida que o banco de dados Fusion aberto tem o mesmo SHA-256 e arquitetura, então cria ações determinísticas de set_name, set_comments, define_func e comentários de cobertura/API.
  4. O Fusion aplica essas ações em seu worker do IDA e pode reter o resultado em seu cache SQLite persistente para análise posterior de múltiplos binários.

Esta é uma entrega explícita de artefato/protocolo, portanto permanece inspecionável e repetível. Consulte o coordenador e o README do Fusion para o worker do lado do IDA e o modelo de cache.

Documentação

O CI cobre o contrato Python e ambas as arquiteturas de plugins nativos. O fluxo de trabalho de release também verifica o servidor stdio empacotado e as sondas gerenciadas. Portões de depurador ao vivo são executados localmente e retêm relatórios JSON; consulte Contribuindo. Analise binários não confiáveis dentro de uma VM descartável.

GPL-3.0. Baseado em x64dbgMCP por Sam W (Wasdubya). Consulte NOTICE para atribuição.



English Русский

O x64dbg MCP dá a um cliente MCP controle protegido de uma sessão real de x64dbg ou x32dbg. Ele transforma depuração ao vivo em um fluxo de trabalho de engenharia reversa reproduzível: vincule o processo exato, observe fatos de runtime, recupere artefatos úteis, valide-os de forma independente e entregue as evidências ao IDA.

O que ele faz

  • Inicia ou anexa com argumentos, cwd, ambiente e política de processos filhos.
  • Registradores, memória, threads, módulos e breakpoints com controle de propriedade.
  • Evidências de rastreamento de instruções, API, heap, exceções e blocos básicos.
  • Busca de comparações, strings de runtime, chamadas indiretas, OEP e imports.
  • PE da memória, minidump, correção de IAT e exportação do arquivo corrigido.
  • Troca com o IDA via vínculo portátil de SHA-256 do arquivo + module RVA, em vez de um VA de runtime aleatório.

Grupos de ferramentas

EtapaExemplos de ferramentas MCPO que é obtido
Início e vinculaçãoInitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpointProcesso reproduzível e identidade de sessão exata
ControleRegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpointRun/step controlado, memória e breakpoints
Evidências de runtimeRunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCaptureCaminhos de instruções, API/heap, exceções e blocos executados
Busca de chaves e unpackSearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIATComparações, strings, OEP e candidatos a IAT de runtime
Dump e recuperaçãoWriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFileDumps repetíveis e artefatos PE verificados
Entrega ao IDAExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRvaComentários, labels, cobertura e fatos de API por hash/RVA

O catálogo completo, parâmetros e contratos de resposta estão na referência de ferramentas. O perfil compact torna as respostas comuns curtas; detail="full" e o perfil full retornam toda a evidência.

Configuração rápida

Baixe de Releases um único arquivo Windows. Dentro já estão ambos os plugins nativos e o backend Python:

  • plugins\MCPx64dbg.dp64 para x64dbg
  • plugins\MCPx64dbg.dp32 para x32dbg
  • runtime\src e runtime\requirements.txt
  • sondas de runtime gerenciado x64/x86 autônomas em runtime\tools\bin\managed_probe

Feche o x64dbg/x32dbg. Abra o PowerShell na pasta com o ZIP baixado e execute o bloco abaixo. Ele mesmo solicitará a pasta para o MCP e o caminho para o x64dbg já instalado — disco e localização não são presumidos antecipadamente. Não feche esta janela do PowerShell até executar os comandos para o cliente MCP escolhido.

$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

Adicione o servidor ao ~\.codex\config.toml. Substitua os três valores entre colchetes angulares pelos caminhos absolutos que o bloco de configuração imprimiu. Em strings de aspas simples do TOML, as barras invertidas do Windows não precisam ser duplicadas.

[mcp_servers.x64dbg]
command = '<PythonExe>'
args = ['<Launcher>']
startup_timeout_sec = 90

[mcp_servers.x64dbg.env]
X64DBG_ROOT = '<X64dbgRoot>'
X64DBG_MCP_TOOL_PROFILE = 'compact'

Para inicialização normal do alvo, chame InitDebuggee diretamente com o caminho para o EXE. A ferramenta determina x86/x64, inicia o depurador apropriado de X64DBG_ROOT, aguarda a bridge e abre o alvo. Uma verificação separada via BridgeHello e busca manual do caminho para o x64dbg não são necessárias.

Verificação de instalação opcional: inicie o x64dbg ou x32dbg e verifique a bridge:

& $PythonExe (Join-Path $RuntimeRoot 'src\x64dbg.py') GetDebuggerPluginStatus

Os campos GetScyllaHideStatus.installed e integrationReady referem-se ao backend baseado em InjectorCLI, HookLibrary e profile INI. guiPluginPresent informa apenas sobre o plugin opcional da GUI do x64dbg; para injeção MCP, ele não é necessário.

ScyllaHide é ativado explicitamente: as ferramentas de inicialização usam use_scyllahide="off" por padrão, e auto também pula a injeção. Se necessário, use force com o perfil escolhido. O backend CLI cria um INI separado ao lado do injetor e passa o PID exato. Para eliminar a falha reproduzida ao continuar, ele desativa NtContinueHook junto com KillAntiAttach e relata essas alterações no resultado. A compatibilidade das demais configurações do perfil depende do alvo e do Windows.

Claude Code

Adicione o mesmo servidor stdio ao Claude Code com o escopo do usuário. O comando usa os caminhos escolhidos acima, em vez de uma localização de outro computador:

$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

Ou execute claude mcp add e insira os mesmos command, args e env interativamente.

Claude Desktop e outros clientes stdio

Use a configuração JSON do MCP do seu cliente. No Claude Desktop no Windows, é %APPDATA%\Claude\claude_desktop_config.json. Gere um JSON com os caminhos realmente escolhidos:

$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 e outros clientes stdio usam o mesmo contrato command/args/env; apenas o caminho para o arquivo JSON difere.

Compilação a partir do código-fonte

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

Sincronização com IDA Pro MCP Fusion

A integração foi projetada especificamente para o fork rison1337/ida-pro-mcp-fusion. x64dbg MCP não substitui o IDA nem grava em um banco de dados aleatório:

  1. ExportRuntimeEvidence salva um JSON versionado com SHA-256 do alvo, arquitetura, module RVA, blocos executados, chamadas de API, labels, comments e funções.
  2. ResolveModuleRva e o coordinator convertem endereços de runtime em coordenadas da imagem estática.
  3. tools/ida_evidence_coordinator.py verifica o SHA-256 e a arquitetura do banco Fusion aberto e constrói ações determinísticas set_name, set_comments, define_func e comentários de coverage/API.
  4. O Fusion aplica as ações em seu worker IDA e pode salvar o resultado em um cache persistente SQLite para as próximas pesquisas multi-binário.

Isso é um handoff de artifact/protocol explícito, verificável e repetível, não uma comunicação oculta por VAs instáveis. Detalhes: coordinator e README Fusion.

Documentação

O CI verifica o contrato Python e os plugins nativos de ambas as arquiteturas. O workflow de release também verifica o servidor stdio e as sondas gerenciadas do arquivo compilado. Verificações ao vivo do debugger são executadas localmente e salvam relatórios JSON; consulte contribuição. Analise binários desconhecidos em uma VM descartável.

GPL-3.0. O projeto é baseado em x64dbgMCP Sam W (Wasdubya). Atribuição: NOTICE.