
Roteador MCP IDALib de múltiplas sessões para agentes de codificação. Analise múltiplos binários em paralelo com ferramentas de engenharia reversa compatíveis com IDA.
Um endpoint MCP. Muitas sessões IDALib isoladas.
Uma camada de controle leve e voltada para agentes para análise binária headless com o conjunto de ferramentas MCP do IDA Pro.
[!IMPORTANT] Pocket Disasm é um projeto open-source independente. Não é afiliado, endossado, patrocinado ou um produto oficial da Hex-Rays. IDA Pro e IDALib são produtos da Hex-Rays e exigem uma instalação e licença válidas separadas. Pocket Disasm não distribui IDA, IDALib ou qualquer software da Hex-Rays.
Pocket Disasm executa um roteador MCP público e dá a cada binário seu próprio worker IDALib. Agentes de codificação podem criar, selecionar, inspecionar, salvar e fechar sessões de análise sem abrir uma janela interativa separada do IDA para cada arquivo.
O projeto usa uma revisão fixa do mrexodia/ida-pro-mcp como sua implementação central de análise MCP e catálogo de ferramentas. Pocket Disasm constrói seu roteador multi-sessão unificado, isolamento de processos, integrações com agentes, diagnósticos e centro de controle de terminal em torno desse projeto upstream.
Execute um comando no PowerShell:
irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1 | iex
Em seguida, abra um novo terminal e execute:
pocket
O instalador cria um ambiente Python isolado em
%LOCALAPPDATA%\PocketDisasm, instala dependências fixadas, adiciona o comando
pocket ao PATH do usuário e abre o centro de controle do terminal.
ida-pro-mcp.pocket.idalib.dll.O endpoint padrão é:
http://127.0.0.1:13339/mcp
A porta pode ser alterada a partir do TUI. Pocket Disasm atualiza todos os arquivos de configuração MCP que registrou anteriormente e reinicia o roteador quando necessário.
Os agentes não precisam de um servidor MCP dedicado para cada binário. Eles criam e roteiam sessões através do endpoint compartilhado:
idb_open(input_path="C:\\samples\\first.exe", session_id="first", wait=true)
idb_open(input_path="C:\\samples\\second.dll", session_id="second", wait=true)
decompile(addr="main", database="first")
survey_binary(database="second")
A seleção também pode ser limitada ao cliente MCP atual:
idb_select(database="first")
decompile(addr="main")
Isso permite que um modelo gerencie vários binários ou vários agentes trabalhem através do mesmo roteador sem compartilhar um banco de dados selecionado.
flowchart LR
A1["Coding agent A"] --> MCP["Pocket Disasm MCP<br/>127.0.0.1:13339/mcp"]
A2["Coding agent B"] --> MCP
A3["Coding agent N"] --> MCP
MCP --> S["Multi-session supervisor"]
S --> W1["IDALib worker<br/>binary A"]
S --> W2["IDALib worker<br/>binary B"]
S --> WN["IDALib worker<br/>binary N"]Cada sessão ativa tem seu próprio processo, porta interna, espaço de trabalho de análise isolado, banco de dados IDA e log do worker. O limite configurável de workers evita a criação ilimitada de processos; o padrão é 8 e o TUI aceita valores de 1 a 128.
Pocket Disasm adiciona as seguintes ferramentas ao catálogo MCP regular:
| Ferramenta | Propósito |
|---|---|
idb_open | Criar uma sessão isolada para um binário local |
idb_list | Listar sessões, estados, processos e seleção atual |
idb_select | Selecionar uma sessão padrão para o cliente MCP atual |
idb_health | Ler a inicialização do worker e a saúde do processo |
idb_wait | Aguardar a autoanálise do IDA e a inicialização do MCP |
idb_save | Salvar o banco de dados IDA atual |
idb_logs | Ler saída recente de um worker |
idb_close | Parar um worker e liberar seus recursos |
Ferramentas de análise regulares, como survey_binary, lookup_funcs,
func_query, find_bytes e decompile, aceitam um argumento opcional
database. Se omitido, Pocket Disasm usa a sessão selecionada por aquele
cliente MCP.
O TUI mescla apenas a entrada MCP do pocket-disasm nos arquivos de
configuração existentes; não substitui o arquivo inteiro.
| Agente | Configuração global | Configuração de projeto |
|---|---|---|
| Codex | ~/.codex/config.toml | Endpoint global é usado |
| Claude Code | ~/.claude.json | .mcp.json |
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| VS Code | mcp.json do perfil do usuário | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | Endpoint global é usado |
A mesma operação está disponível via CLI:
pocket integrate codex claude cursor --scope global
pocket integrate claude cursor vscode --scope project --project-dir .
O TUI cobre instalação e controle normais. A CLI permanece disponível para automação e diagnósticos:
| Comando | Descrição |
|---|---|
pocket | Abrir o centro de controle do terminal |
pocket doctor | Validar dependências Python, IDA, IDALib e MCP |
pocket start | Iniciar o roteador unificado em segundo plano |
pocket stop | Parar o roteador e seus workers |
pocket restart | Reiniciar o roteador |
pocket status | Mostrar endpoint e estado do daemon |
pocket logs | Imprimir saída de diagnóstico recente |
pocket port <port> | Alterar o endpoint nas configurações dos agentes registrados |
pocket config --max-workers <n> | Definir o limite de workers simultâneos |
pocket integrate <agents> | Configurar um ou mais agentes de codificação |
Execute pocket <comando> --help para ver todas as opções.
Pocket Disasm armazena seu estado de usuário em:
%LOCALAPPDATA%\PocketDisasm
Arquivos importantes incluem:
| Arquivo | Conteúdo |
|---|---|
config.json | Caminho do IDA, portas do endpoint e limite de workers |
integrations.json | Arquivos de configuração MCP gerenciados pelo Pocket Disasm |
events.log | Eventos de ciclo de vida estruturados e tracebacks de exceções |
pocket-disasm.out.log | Saída padrão do roteador |
pocket-disasm.err.log | Saída de erro do roteador |
sessions/<sessão>/worker.log | Saída persistente de um worker IDALib |
installer.log | Transcrição de instalação e atualização |
update.log | Saída do atualizador no TUI |
Use Inspecionar logs no TUI ou execute:
pocket logs
O TUI verifica se há uma versão mais recente uma vez na inicialização. Quando uma atualização está disponível, Atualizar Pocket Disasm aparece na lista de ações. O atualizador preserva a configuração, atualiza o ambiente isolado, reinicia o TUI e traz o roteador de volta online se estava em execução.
winget.Pocket Disasm não inclui IDA, IDALib ou uma licença do IDA. É um projeto independente e não é afiliado ou endossado pela Hex-Rays.
$script = irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1
& ([scriptblock]::Create($script)) -Uninstall
As entradas MCP dos agentes não são removidas automaticamente de propósito, para que configurações não relacionadas nunca sejam reescritas durante a desinstalação. Elas podem ser removidas dos arquivos de configuração do agente correspondente se não forem mais necessárias.
Pocket Disasm é lançado sob a Licença MIT.