
Server MCP headless per IDA Pro per l'analisi binaria assistita da IA, basato su idalib
Strumento CLI IDA headless e toolkit skill-first per l'analisi binaria su macOS e Linux. ida-cli seleziona automaticamente un backend runtime, avvia automaticamente un server locale quando necessario ed espone la stessa superficie come CLI piatta, trasporto MCP stdio e trasporto MCP HTTP Streamable.
ida-cli (client e servizio in un unico eseguibile)ida-cli installabile (skill/SKILL.md) per ambienti agenteIl livello di servizio worker/router sottostante viene avviato e arrestato automaticamente dalla CLI. Devi eseguire esplicitamente serve / serve-http solo quando vuoi un servizio di lunga durata e indirizzabile esternamente.
La selezione del backend viene effettuata a runtime da probe-runtime. La compilazione richiede comunque un IDA SDK perché il livello nativo incluso nel progetto è collegato ad esso; a runtime la CLI apre IDA direttamente da IDADIR o da un percorso di installazione comune normalizzato.
Sui runtime IDA 9.x supportati, ida-cli può:
.i64 in cacheread_* e convert_numberrun_scriptQuestioni aperte: alcune operazioni di scrittura intensiva e di modifica avanzata dei tipi sono ancora parziali su idat-compat. Consulta docs/TOOLS.md per l'elenco degli strumenti generati.
Il punto di ingresso predefinito è la skill ida-cli, non un'installazione manuale della CLI.
# list the skill exposed by this repository
npx -y skills add https://github.com/cpkt9762/ida-cli --list
# install the ida-cli skill for Codex
npx -y skills add https://github.com/cpkt9762/ida-cli --skill ida-cli --agent codex --yes --global
Dopo l'installazione, la skill include il proprio wrapper di bootstrap:
~/.agents/skills/ida-cli/scripts/ida-cli.sh --help
~/.agents/skills/ida-cli/scripts/ida-cli.sh probe-runtime
~/.agents/skills/ida-cli/scripts/ida-cli.sh --path /path/to/binary list-functions --limit 20
Se ida-cli manca, il wrapper lo installa tramite l'installer del repository prima di inoltrare il comando.
Usala solo se vuoi la CLI standalone senza passare dalla skill.
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --add-path
Varianti utili:
# install a specific release
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --tag v0.9.3 --add-path
# build directly from a branch or ref
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --ref master --build-from-source --add-path
Note:
~/.local/bin/ida-cli di default.--add-path aggiunge quella directory bin al file rc della tua shell.IDASDKDIR né IDALIB_SDK e serve una build locale, l'installer clona automaticamente l'HexRaysSA/ida-sdk open-source.IDADIR prima di installare o eseguire ida-cli.git clone https://github.com/cpkt9762/ida-cli.git
cd ida-cli
export IDADIR="/Applications/IDA Professional 9.4.app/Contents/MacOS" # or a Linux install
export IDASDKDIR="/path/to/ida-sdk" # root or ida-sdk/src
cargo build --bin ida-cli
./target/debug/ida-cli --help
ida-cli è client-first. Qualsiasi sottocomando client avvia automaticamente un server Streamable-HTTP locale in ascolto su una porta casuale e scrive /tmp/ida-cli.socket per il discovery:
./target/debug/ida-cli --path /path/to/sample.bin list-functions --limit 20
./target/debug/ida-cli --path /path/to/sample.bin decompile --addr 0x140001000
./target/debug/ida-cli --path /path/to/sample.bin raw '{"method":"get_xrefs_to","params":{"address":"0x140001000"}}'
I comandi il cui primo argomento è un sottocomando di servizio (serve, serve-http, serve-worker, probe-runtime) entrano invece in modalità servizio:
./target/debug/ida-cli serve # stdio MCP transport
./target/debug/ida-cli serve-http --bind 127.0.0.1:8765
./target/debug/ida-cli probe-runtime
Esempio di output del probe del backend:
{"runtime":{"major":9,"minor":1,"build":250226},"backend":"idat-compat","supported":true,"reason":null}
{"runtime":{"major":9,"minor":4,"build":260610},"backend":"native-linked","supported":true,"reason":null}
Per la superficie completa della CLI, consulta skill/references/cli-tool-reference.md.
IDADIR (il supporto runtime inizia da IDA 9.0)IDASDKDIR o IDALIB_SDKIl percorso dell'SDK può puntare a uno dei due layout:
/path/to/ida-sdk/path/to/ida-sdk/srcidat-compatBackend di compatibilità per IDA 9.0–9.2. Richiama idat come sottoprocesso, esegue brevi script IDAPython e restituisce JSON strutturato al runtime della CLI.
native-linkedBackend per IDA 9.3+. Si collega alla linea idalib inclusa nel progetto e apre i database in-process.
~/.ida/idb/~/.ida/logs/server.log~/.ida/server.sock~/.ida/server.pid/tmp/ida-cli.socket/tmp/ida-cli-out/GitHub Actions compila e testa l'albero su runner ospitati usando l'HexRaysSA/ida-sdk open-source, quindi la CI non dipende da alcuna configurazione di macchina privata.
Comportamento attuale del workflow:
master eseguono la validazionev0.9.3 compilano gli archivi di release per Linux e macOSinstall.sh e gli archivi di piattaformaI binari delle release sono compilati contro gli stub dell'SDK. Al momento dell'installazione, il launcher generato da install.sh risolve il tuo runtime IDA locale tramite IDADIR o un insieme normalizzato di percorsi di installazione comuni prima di invocare ida-cli.
MIT
| Versione IDA | Backend | Note |
|---|
< 9.0 | non supportata | — |
9.0 – 9.2 | idat-compat | richiama idat + IDAPython come sottoprocesso |
9.3+ | native-linked | si collega alla idalib inclusa nel progetto |