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
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 trabalho | Ferramentas representativas | Resultado |
|---|---|---|
| Iniciar e vincular | InitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpoint | Processo reproduzível e identidade de sessão |
| Controle ao vivo | RegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpoint | Execução controlada, memória e alterações de breakpoints |
| Evidências de runtime | RunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCapture | Caminhos de instruções, chamadas API/heap, exceções e blocos executados |
| Recuperação de chaves e unpack | SearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIAT | Comparações, strings, OEP e candidatos a imports de runtime |
| Dump e reparo | WriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFile | Dumps reproduzíveis e artefatos PE verificados de forma independente |
| Entrega de evidências ao IDA | ExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRva | Comentá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.dp64para x64dbgplugins\MCPx64dbg.dp32para x32dbgruntime\srceruntime\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:
ExportRuntimeEvidenceescreve 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.ResolveModuleRvae o coordenador normalizam endereços ao vivo para a identidade de imagem estática.tools/ida_evidence_coordinator.pyvalida que o banco de dados Fusion aberto tem o mesmo SHA-256 e arquitetura, então cria ações determinísticas deset_name,set_comments,define_funce comentários de cobertura/API.- 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.
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
| Etapa | Exemplos de ferramentas MCP | O que é obtido |
|---|---|---|
| Início e vinculação | InitDebuggee, AttachToProcess, LaunchFileUnderDebugger, WaitForBreakpoint | Processo reproduzível e identidade de sessão exata |
| Controle | RegisterGet, RegisterSet, MemoryRead, MemoryWrite, DebugSetBreakpoint, SetHardwareBreakpoint | Run/step controlado, memória e breakpoints |
| Evidências de runtime | RunNativeTrace, GetNativeTrace, StartApiTrace, StartHeapTrace, GetBasicBlockCoverage, WaitForBreakpointCapture | Caminhos de instruções, API/heap, exceções e blocos executados |
| Busca de chaves e unpack | SearchStrings, ScanMemoryStrings, PatternFindMem, FindOEP, RunUntilOEP, FindIATCandidates, InspectRuntimeIAT | Comparações, strings, OEP e candidatos a IAT de runtime |
| Dump e recuperação | WriteMiniDump, DumpModuleRaw, DumpPeFromMemory, ScanMemoryForPEImages, FixDumpImports, ValidateDump, ExportPatchedFile | Dumps repetíveis e artefatos PE verificados |
| Entrega ao IDA | ExportRuntimeEvidence, ImportStaticAnnotations, SyncBreakpoints, ResolveModuleRva | Comentá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.dp64para x64dbgplugins\MCPx64dbg.dp32para x32dbgruntime\srceruntime\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:
ExportRuntimeEvidencesalva um JSON versionado com SHA-256 do alvo, arquitetura, module RVA, blocos executados, chamadas de API, labels, comments e funções.ResolveModuleRvae o coordinator convertem endereços de runtime em coordenadas da imagem estática.tools/ida_evidence_coordinator.pyverifica o SHA-256 e a arquitetura do banco Fusion aberto e constrói ações determinísticasset_name,set_comments,define_funce comentários de coverage/API.- 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.