
Router MCP IDALib multi-sessione per agenti di codifica. Analizza più binari in parallelo con strumenti di reverse engineering compatibili con IDA.
Un endpoint MCP. Molte sessioni IDALib isolate.
Un leggero strato di controllo incentrato sugli agenti per l'analisi binaria headless con il toolset IDA Pro MCP.
[!IMPORTANT] Pocket Disasm è un progetto open-source indipendente. Non è affiliato, approvato, sponsorizzato o un prodotto ufficiale di Hex-Rays. IDA Pro e IDALib sono prodotti di Hex-Rays e richiedono un'installazione e una licenza valide separate. Pocket Disasm non distribuisce IDA, IDALib o alcun software di Hex-Rays.
Pocket Disasm esegue un router MCP pubblico e assegna a ogni binario il proprio worker IDALib. Gli agenti di codifica possono creare, selezionare, ispezionare, salvare e chiudere sessioni di analisi senza avviare una finestra IDA interattiva separata per ogni file.
Il progetto utilizza una revisione bloccata di mrexodia/ida-pro-mcp come implementazione dell'analisi MCP principale e catalogo di strumenti. Pocket Disasm costruisce il suo router multi-sessione unificato, l'isolamento dei processi, le integrazioni con gli agenti, la diagnostica e il centro di controllo del terminale attorno a quel progetto upstream.
Esegui un comando in PowerShell:
irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1 | iex
Quindi apri un nuovo terminale ed esegui:
pocket
L'installer crea un ambiente Python isolato in
%LOCALAPPDATA%\PocketDisasm, installa le dipendenze bloccate, aggiunge il comando pocket al PATH dell'utente e apre il centro di controllo del terminale.
ida-pro-mcp bloccato.pocket.idalib.dll.L'endpoint predefinito è:
http://127.0.0.1:13339/mcp
La porta può essere cambiata dalla TUI. Pocket Disasm aggiorna ogni file di configurazione MCP precedentemente registrato e riavvia il router quando necessario.
Gli agenti non necessitano di un server MCP dedicato per ogni binario. Creano e instradano le sessioni attraverso l'endpoint condiviso:
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")
La selezione può anche essere limitata al client MCP corrente:
idb_select(database="first")
decompile(addr="main")
Questo permette a un modello di gestire diversi binari o a più agenti di lavorare attraverso lo stesso router senza condividere un database selezionato.
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["Supervisore multi-sessione"]
S --> W1["Worker IDALib<br/>binario A"]
S --> W2["Worker IDALib<br/>binario B"]
S --> WN["Worker IDALib<br/>binario N"]
Ogni sessione attiva ha il proprio processo, porta interna, area di lavoro di analisi isolata, database IDA e log del worker. Il limite configurabile di worker impedisce una creazione illimitata di processi; il valore predefinito è 8 e la TUI accetta valori da 1 a 128.
Pocket Disasm aggiunge i seguenti strumenti al catalogo MCP IDA regolare:
Gli strumenti di analisi regolari come survey_binary, lookup_funcs, func_query,
find_bytes e decompile accettano un argomento database opzionale. Se viene omesso, Pocket Disasm utilizza la sessione selezionata da quel client MCP.
La TUI unisce solo la voce MCP pocket-disasm nei file di configurazione esistenti; non sostituisce l'intero file.
La stessa operazione è disponibile dalla CLI:
pocket integrate codex claude cursor --scope global
pocket integrate claude cursor vscode --scope project --project-dir .
La TUI copre l'installazione e il controllo normali. La CLI rimane disponibile per automazione e diagnostica:
Esegui pocket <command> --help per tutte le opzioni.
Pocket Disasm archivia il suo stato utente in:
%LOCALAPPDATA%\PocketDisasm
I file importanti includono:
Usa Ispeziona log nella TUI o esegui:
pocket logs
La TUI controlla una versione più recente una volta all'avvio. Quando è disponibile un aggiornamento, Aggiorna Pocket Disasm appare nell'elenco delle azioni. L'aggiornatore preserva la configurazione, aggiorna l'ambiente isolato, riavvia la TUI e riporta il router online se era in esecuzione in precedenza.
winget.Pocket Disasm non include IDA, IDALib o una licenza IDA. È un progetto indipendente e non è affiliato o approvato da Hex-Rays.
$script = irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1
& ([scriptblock]::Create($script)) -Uninstall
Le voci MCP degli agenti non vengono deliberate rimuovere automaticamente, in modo che la configurazione non correlata non venga mai riscritta durante la disinstallazione. Possono essere rimosse dai corrispondenti file di configurazione degli agenti se non sono più necessarie.
Pocket Disasm è rilasciato sotto la Licenza MIT.
| Strumento | Scopo |
|---|
idb_open | Crea una sessione isolata per un binario locale |
idb_list | Elenca sessioni, stati, processi e selezione corrente |
idb_select | Seleziona una sessione predefinita per il client MCP corrente |
idb_health | Legge l'avvio del worker e lo stato del processo |
idb_wait | Attende l'analisi automatica di IDA e l'avvio di MCP |
idb_save | Salva il database IDA corrente |
idb_logs | Legge l'output recente di un worker |
idb_close | Ferma un worker e rilascia le sue risorse |
| Agente | Configurazione globale | Configurazione di progetto |
|---|
| Codex | ~/.codex/config.toml | Viene utilizzato l'endpoint globale |
| Claude Code | ~/.claude.json | .mcp.json |
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| VS Code | Profilo utente mcp.json | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | Viene utilizzato l'endpoint globale |
| Comando | Descrizione |
|---|
pocket | Apre il centro di controllo del terminale |
pocket doctor | Valida le dipendenze Python, IDA, IDALib e MCP |
pocket start | Avvia il router unificato in background |
pocket stop | Ferma il router e i suoi worker |
pocket restart | Riavvia il router |
pocket status | Mostra endpoint e stato del demone |
pocket logs | Stampa l'output diagnostico recente |
pocket port <port> | Cambia l'endpoint nelle configurazioni dell'agente registrato |
pocket config --max-workers <n> | Imposta il limite di worker concorrenti |
pocket integrate <agents> | Configura uno o più agenti di codifica |
| File | Contenuto |
|---|
config.json | Percorso IDA, porte endpoint e limite worker |
integrations.json | File di configurazione MCP gestiti da Pocket Disasm |
events.log | Eventi strutturati del ciclo di vita e traceback delle eccezioni |
pocket-disasm.out.log | Output standard del router |
pocket-disasm.err.log | Output degli errori del router |
sessions/<session>/worker.log | Output persistente per un worker IDALib |
installer.log | Trascrizione dell'installazione e dell'aggiornamento |
update.log | Output dell'aggiornatore nella TUI |