
Routeur MCP IDALib multi-session pour agents de codage. Analysez plusieurs binaires en parallèle avec des outils de rétro-ingénierie compatibles IDA.
Un point de terminaison MCP. De nombreuses sessions IDALib isolées.
Une couche de contrôle légère, axée sur les agents, pour l'analyse binaire sans tête avec l'ensemble d'outils IDA Pro MCP.
[!IMPORTANT] Pocket Disasm est un projet open-source indépendant. Il n'est pas affilié à, approuvé par, sponsorisé par, ni un produit officiel de Hex-Rays. IDA Pro et IDALib sont des produits de Hex-Rays et nécessitent une installation et une licence distinctes. Pocket Disasm ne distribue pas IDA, IDALib, ni aucun logiciel Hex-Rays.
Pocket Disasm exécute un routeur MCP public et donne à chaque binaire son propre worker IDALib. Les agents de codage peuvent créer, sélectionner, inspecter, sauvegarder et fermer des sessions d'analyse sans lancer une fenêtre IDA interactive distincte pour chaque fichier.
Le projet utilise une révision épinglée de mrexodia/ida-pro-mcp comme implémentation d'analyse MCP principale et catalogue d'outils. Pocket Disasm construit son routeur multi-session unifié, son isolation de processus, ses intégrations d'agents, ses diagnostics et son centre de contrôle terminal autour de ce projet amont.
Exécutez une commande dans PowerShell :
irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1 | iex
Ensuite, ouvrez un nouveau terminal et exécutez :
pocket
L'installateur crée un environnement Python isolé sous %LOCALAPPDATA%\PocketDisasm, installe les dépendances épinglées, ajoute la commande pocket au PATH utilisateur et ouvre le centre de contrôle terminal.
ida-pro-mcp.pocket.idalib.dll.Le point de terminaison par défaut est :
http://127.0.0.1:13339/mcp
Le port peut être modifié depuis le TUI. Pocket Disasm met à jour chaque fichier de configuration MCP qu'il a précédemment enregistré et redémarre le routeur si nécessaire.
Les agents n'ont pas besoin d'un serveur MCP dédié pour chaque binaire. Ils créent et acheminent les sessions via le point de terminaison partagé :
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 sélection peut également être limitée au client MCP actuel :
idb_select(database="first")
decompile(addr="main")
Cela permet à un modèle de gérer plusieurs binaires ou à plusieurs agents de travailler via le même routeur sans partager une base de données sélectionnée.
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"]
Chaque session active possède son propre processus, port interne, espace de travail d'analyse isolé, base de données IDA et journal de worker. La limite configurable de workers empêche une création illimitée de processus ; la valeur par défaut est 8 et le TUI accepte des valeurs de 1 à 128.
Pocket Disasm ajoute les outils suivants au catalogue IDA MCP standard :
Les outils d'analyse classiques tels que survey_binary, lookup_funcs, func_query, find_bytes et decompile acceptent un argument database optionnel. S'il est omis, Pocket Disasm utilise la session sélectionnée par ce client MCP.
Le TUI fusionne uniquement l'entrée MCP pocket-disasm dans les fichiers de configuration existants ; il ne remplace pas l'intégralité du fichier.
La même opération est disponible depuis la CLI :
pocket integrate codex claude cursor --scope global
pocket integrate claude cursor vscode --scope project --project-dir .
Le TUI couvre l'installation et le contrôle normaux. La CLI reste disponible pour l'automatisation et les diagnostics :
Exécutez pocket <commande> --help pour toutes les options.
Pocket Disasm stocke son état utilisateur sous :
%LOCALAPPDATA%\PocketDisasm
Les fichiers importants incluent :
Utilisez Inspecter les journaux dans le TUI ou exécutez :
pocket logs
Le TUI vérifie une version plus récente une fois au démarrage. Lorsqu'une mise à jour est disponible, Mettre à jour Pocket Disasm apparaît dans la liste des actions. Le programme de mise à jour préserve la configuration, met à jour l'environnement isolé, redémarre le TUI et remet le routeur en ligne s'il était précédemment en cours d'exécution.
winget.Pocket Disasm n'inclut pas IDA, IDALib ou une licence IDA. Il s'agit d'un projet indépendant qui n'est ni affilié ni approuvé par Hex-Rays.
$script = irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1
& ([scriptblock]::Create($script)) -Uninstall
Les entrées MCP des agents ne sont volontairement pas supprimées automatiquement, de sorte que la configuration non liée n'est jamais réécrite lors de la désinstallation. Elles peuvent être supprimées des fichiers de configuration des agents correspondants si elles ne sont plus nécessaires.
Pocket Disasm est publié sous la licence MIT.
| Outil | Objectif |
|---|
idb_open | Créer une session isolée pour un binaire local |
idb_list | Lister les sessions, états, processus et la sélection actuelle |
idb_select | Sélectionner une session par défaut pour le client MCP actuel |
idb_health | Lire le démarrage du worker et la santé du processus |
idb_wait | Attendre l'analyse automatique d'IDA et le démarrage MCP |
idb_save | Sauvegarder la base de données IDA actuelle |
idb_logs | Lire la sortie récente d'un worker |
idb_close | Arrêter un worker et libérer ses ressources |
| Agent de codage | Configuration globale | Configuration projet |
|---|
| Codex | ~/.codex/config.toml | Le point de terminaison global est utilisé |
| Claude Code | ~/.claude.json | .mcp.json |
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| VS Code | Profile utilisateur mcp.json | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | Le point de terminaison global est utilisé |
| Commande | Description |
|---|
pocket | Ouvrir le centre de contrôle terminal |
pocket doctor | Valider les dépendances Python, IDA, IDALib et MCP |
pocket start | Démarrer le routeur unifié en arrière-plan |
pocket stop | Arrêter le routeur et ses workers |
pocket restart | Redémarrer le routeur |
pocket status | Afficher l'état du point de terminaison et du démon |
pocket logs | Afficher la sortie de diagnostic récente |
pocket port <port> | Changer le point de terminaison dans les configurations d'agents enregistrés |
pocket config --max-workers <n> | Définir la limite de workers simultanés |
pocket integrate <agents> | Configurer un ou plusieurs agents de codage |
| Fichier | Contenu |
|---|
config.json | Chemin d'IDA, ports de point de terminaison et limite de workers |
integrations.json | Fichiers de configuration MCP gérés par Pocket Disasm |
events.log | Événements de cycle de vie structurés et traces d'exception |
pocket-disasm.out.log | Sortie standard du routeur |
pocket-disasm.err.log | Sortie d'erreur du routeur |
sessions/<session>/worker.log | Sortie persistante pour un worker IDALib |
installer.log | Journal d'installation et de mise à niveau |
update.log | Sortie du programme de mise à jour dans le TUI |