
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:
| 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 |
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.
| 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 |
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:
| 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 |
Esegui pocket <command> --help per tutte le opzioni.
Pocket Disasm archivia il suo stato utente in:
%LOCALAPPDATA%\PocketDisasm
I file importanti includono: