
IDAssist v2.3.0
Plugin di reverse engineering basato sull'IA per IDA Pro
IDAssist
Plugin di Reverse Engineering Alimentato dall'IA per IDA Pro
Autore: Jason Tang
Descrizione
IDAssist è un plugin per IDA Pro che integra l'analisi basata su LLM direttamente nell'interfaccia di IDA, offrendo reverse engineering binario assistito dall'IA attraverso provider LLM configurabili, grafi di conoscenza semantica, ricerca documentale RAG, e supporta un'ampia varietà di provider LLM.
Costruito con Python e PySide6, IDAssist funge da pannello ancorabile all'interno di IDA Pro 9.0+ e comunica con provider LLM (OpenAI, Anthropic, Ollama, LiteLLM e altri) per analizzare funzioni, suggerire rinomine, rispondere a domande sul codice e costruire un grafo di conoscenza ricercabile dell'intero binario.

Funzionalità Principali
Spiegazione delle Funzioni — Genera spiegazioni dettagliate in linguaggio naturale delle funzioni decompilate con analisi di sicurezza automatica che include livello di rischio, profilo di attività, flag di sicurezza e rilevamento API.
Chat di Query Interattiva — Poni domande sul binario con cronologia chat persistente. Usa le macro di contesto (#func, #addr, #line, #range) per iniettare codice di funzioni, indirizzi o intervalli di disassemblaggio nelle query.
Azioni Automatiche — Suggerimenti di rinomina basati sull'IA per funzioni, variabili e tipi. Rivedi le modifiche proposte in una tabella con punteggi di confidenza, poi applica le azioni selezionate all'IDB.
Grafo di Conoscenza Semantica — Costruisci ed esplora un grafo di conoscenza delle funzioni del binario, delle relazioni di chiamata, dei flussi di dati e delle caratteristiche di sicurezza. Include rendering visivo del grafo, ricerca semantica e rilevamento di comunità.
Ricerca Documentale RAG — Carica documenti di riferimento (.txt, .md, .rst, .pdf) e usali come contesto durante le query LLM. Supporta la ricerca ibrida testo+vettore tramite indicizzazione Whoosh.
Integrazione SymGraph — Invia e ricevi nomi di funzioni, nomi di variabili, tipi e dati del grafo sulla piattaforma collaborativa SymGraph. Include una procedura guidata multi-step con risoluzione dei conflitti per i pull.
Gestione delle Impostazioni — Configura più provider LLM e MCP, gestisci le credenziali API di SymGraph, personalizza il prompt di sistema e imposta i percorsi dei database.
Capacità Avanzate
Agente ReAct
La scheda Query supporta una modalità agente ReAct (Reasoning + Acting) autonoma. Quando abilitata, l'LLM pianifica una strategia di indagine, esegue strumenti per raccogliere informazioni, riflette sui risultati e sintetizza una risposta completa — tutto automaticamente attraverso più cicli di ragionamento.
Pensiero Esteso
Configura i livelli di sforzo di ragionamento per controllare quanto l'LLM 'pensa' prima di rispondere:
| Livello | Budget di Pensiero | Ideale per |
|---|---|---|
| Nessuno | Disabilitato | Query veloci e semplici |
| Basso | ~2K token | Analisi semplice |
| Medio | ~10K token | Complessità moderata |
| Alto | ~25K token | Analisi approfondita, codice complesso |
Integrazione MCP
IDAssist può connettersi a server MCP esterni per interazioni LLM potenziate da strumenti, dove il modello può ispezionare programmaticamente le funzioni, leggere il disassemblaggio, interrogare i cross-reference e modificare l'IDB durante il ragionamento. Sono supportati sia server MCP basati su URL (SSE o Streamable HTTP) sia server MCP basati su stdio avviati da un comando CLI locale. IDAssist fornisce anche strumenti interni integrati per il function calling senza richiedere un server MCP esterno.
Function Calling
I provider LLM con supporto per tool-calling possono invocare funzioni di analisi di IDA a metà conversazione, consentendo un'indagine iterativa senza intervento manuale.
Feedback RLHF
Fornisci feedback pollice su/pollice giù su spiegazioni e risposte alle query. Il feedback viene archiviato localmente e può essere utilizzato per migliorare l'ingegneria del prompt e la selezione del modello.
Architettura
IDAssist segue un pattern MVC (Model-View-Controller):
- Viste (
src/views/) — Widget di scheda PySide6 che emettono segnali sull'interazione utente - Controller (
src/controllers/) — Collegano i segnali delle viste alle chiamate dei servizi, gestiscono lo stato - Servizi (
src/services/) — Logica di business, provider LLM, accesso al database, analisi del grafo - Strumenti Interni (
src/services/internal_tools.py) — Definizioni di strumenti specifici di IDA per il function calling LLM - Strumenti del Grafo (
src/services/graphrag/graphrag_tools.py) — Strumenti di lettura/scrittura del grafo semantico per l'interazione LLM
Principi chiave di progettazione:
- Tutte le chiamate API di IDA vengono eseguite sul thread principale tramite
execute_on_main_thread() - Le risposte LLM vengono trasmesse in modo incrementale all'interfaccia utente
- Database SQLite locali per la persistenza (nessun database esterno richiesto)
- Registro dei servizi singleton con inizializzazione thread-safe
Avvio Rapido
-
Installa il plugin (consigliato — IDA Plugin Manager):
hcli plugin install idassistQuesto installa automaticamente il plugin e le sue dipendenze Python nell'ambiente di IDA.
-
Oppure installa manualmente (dal tarball della release):
Scarica l'ultimo zip della release da GitHub Releases ed estrailo nella tua directory dei plugin di IDA:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/Windows: Estrai lo zip in
%APPDATA%\Hex-Rays\IDA Pro\plugins\.Poi installa le dipendenze usando il Python fornito con IDA (non il Python di sistema):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txtWindows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"Sostituisci
<IDA_INSTALL_DIR>con il percorso di installazione di IDA Pro (ad es.,/opt/idapro-9.0oC:\Program Files\IDA Pro 9.0).Suggerimento: Puoi anche impostare la variabile d'ambiente
IDAUSRsu una directory personalizzata contenente una sottodirectoryplugins/. -
Apri IDAssist: Avvia IDA Pro, apri un binario e premi
Ctrl+Shift+A(o Edit > Plugins > IDAssist). -
Configura un provider: Vai alla scheda Impostazioni, clicca Aggiungi sotto Provider LLM e configura il tuo provider preferito.
-
Analizza una funzione: Vai a una qualsiasi funzione, clicca sulla scheda Spiegazione e premi Spiega Funzione.
Per istruzioni di configurazione dettagliate, vedi Per Iniziare.
Configurazione Provider LLM
IDAssist supporta i seguenti tipi di provider:
| Tipo | Metodo di Autenticazione | Note |
|---|---|---|
anthropic_platform | Chiave API | API Anthropic diretta |
anthropic_oauth | OAuth (browser) | Autenticazione tramite browser |
anthropic_claude_cli | CLI locale | Utilizza il binario CLI claude |
bedrock | Credenziali AWS | API Converse AWS Bedrock diretta |
openai_platform | Chiave API | API OpenAI diretta |
openai_oauth | OAuth (browser) | Autenticazione tramite browser |
ollama | Nessuna (locale) | Modelli self-hosted |
litellm | URL proxy | Proxy multi-provider |
Modelli Consigliati
| Provider | Modello | Punti di Forza |
|---|---|---|
| Anthropic | claude-sonnet-4-6 | Forte analisi del codice, pensiero esteso |
| OpenAI | gpt-5.3-codex | Veloce, buona analisi generale |
| Ollama | qwen2.5-coder:32b | Locale, nessuna chiave API necessaria |
Utilizzo del Grafo Semantico
La scheda Grafo Semantico fornisce un grafo di conoscenza del binario:
- ReIndicizza il Binario — Estrae la struttura delle funzioni, il grafo delle chiamate e i cross-reference
- Analisi Semantica — Genera riassunti LLM per ogni funzione
- Analisi di Sicurezza — Rileva pattern di vulnerabilità e API rilevanti per la sicurezza
- Flusso di Rete — Traccia le operazioni di rete attraverso il grafo delle chiamate
- Rilevamento di Comunità — Raggruppa funzioni correlate in moduli
Esplora il grafo tramite la Vista Elenco (chiamanti, chiamati, archi, flag), Grafo Visivo (diagramma interattivo di nodi con espansione N-hop) o Ricerca (7 tipi di query inclusi ricerca semantica, funzioni simili e contesto di chiamata).
Azioni del Menu Contestuale
Fai clic con il tasto destro in qualsiasi vista Disassembly o Pseudocode per accedere:
| Azione | Tasto Rapido | Effetto |
|---|---|---|
| Spiega Funzione | Ctrl+Shift+E | Apre la scheda Spiegazione e genera una spiegazione |
| Chiedi sulla Selezione | Ctrl+Shift+Q | Apre la scheda Query con contesto #func |
| Suggerimenti di Rinomina | — | Apre la scheda Azioni e genera suggerimenti |
Requisiti
- IDA Pro 9.0+ con Python 3 e PySide6
- Decompilatore Hex-Rays (consigliato per le funzionalità di pseudocodice)
- Pacchetti Python elencati in
requirements.txt
Documentazione
- Indice della Documentazione
- Per Iniziare
- Riferimenti Schede: Spiegazione | Query | Azioni | Grafo Semantico | RAG | Impostazioni
- Flussi di Lavoro: Spiegazione | Query | Grafo Semantico
Homepage
Licenza
Vedere il file LICENSE per i dettagli.