
Plugin di reverse engineering basato sull'IA per IDA Pro
Plugin di Reverse Engineering Alimentato dall'IA per IDA Pro
Autore: Jason Tang
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.

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.
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.
Configura i livelli di sforzo di ragionamento per controllare quanto l'LLM 'pensa' prima di rispondere:
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.
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.
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.
IDAssist segue un pattern MVC (Model-View-Controller):
src/views/) — Widget di scheda PySide6 che emettono segnali sull'interazione utentesrc/controllers/) — Collegano i segnali delle viste alle chiamate dei servizi, gestiscono lo statosrc/services/) — Logica di business, provider LLM, accesso al database, analisi del grafosrc/services/internal_tools.py) — Definizioni di strumenti specifici di IDA per il function calling LLMsrc/services/graphrag/graphrag_tools.py) — Strumenti di lettura/scrittura del grafo semantico per l'interazione LLMPrincipi chiave di progettazione:
execute_on_main_thread()Installa il plugin (consigliato — IDA Plugin Manager):
hcli plugin install idassist
Questo 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.txt
Windows:
"<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.0o ).
Per istruzioni di configurazione dettagliate, vedi Per Iniziare.
IDAssist supporta i seguenti tipi di provider:
| Provider | Modello | Punti di Forza |
|---|---|---|
| Anthropic | claude-sonnet-4-6 |
La scheda Grafo Semantico fornisce un grafo di conoscenza del binario:
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).
Fai clic con il tasto destro in qualsiasi vista Disassembly o Pseudocode per accedere:
| Azione | Tasto Rapido | Effetto |
|---|
requirements.txtVedere il file LICENSE per i dettagli.
| 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 |
C:\Program Files\IDA Pro 9.0Suggerimento: Puoi anche impostare la variabile d'ambiente IDAUSR su una directory personalizzata contenente una sottodirectory plugins/.
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.
| 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 |
| 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 |
| 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 |