
Vibe Reverse Engineer con IDA Pro: un'interfaccia per IDA in SQL tramite tabelle virtuali live. Non lasciarti ingannare dalle apparenze! :)
Dai a qualsiasi agente AI la capacità di comprendere i binari compilati.
IDASQL è un'interfaccia SQL per i database di IDA Pro, creata da Elias Bachaalany. Espone oltre 30 tabelle virtuali che coprono funzioni, riferimenti incrociati, stringhe, tipi, importazioni, disassemblaggio e decompilazione. Usa le skill /idasql dal tuo agente di coding per lavorare completamente in modalità headless -- l'agente esegue IDA in background per te -- oppure apri l'interfaccia di IDA e collabora con il tuo agente di coding per fare reverse engineering insieme. Niente IDAPython. Niente scripting. Solo SQL.
Perché SQL? SQL è il linguaggio di query universale che ogni agente AI già conosce. IDASQL è agnostico rispetto all'agente: Claude, ChatGPT, Copilot, Cursor, agenti personalizzati, o nessun agente affatto. Qualsiasi strumento in grado di inviare una query SQL può analizzare un binario.
IDASQL supporta l'analisi, il riferimento incrociato e il trasferimento di annotazioni tra uno o più database contemporaneamente. Ciò che puoi fare è limitato solo dalla tua immaginazione e dalla potenza del modello che utilizzi.
IDA Pro ha già il proprio formato di database che descrive funzioni, stringhe, riferimenti incrociati, tipi e altro ancora. IDASQL mappa queste strutture interne su tabelle virtuali SQL live. Non esiste un passaggio separato di esportazione o indicizzazione -- le query vengono eseguite direttamente sul database di IDA e le modifiche si riflettono in tempo reale.
| Modalità | Come avviare | Ideale per |
|---|---|---|
| CLI standalone | idasql -s binary.i64 -i | SQL diretto, scripting, pipeline |
| Plugin IDA | Seleziona idasql dal menu a tendina della CLI di IDA | SQL all'interno della GUI, database attivo |
| Flusso di lavoro con skill | /idasql:connect nella tua CLI di coding | Analisi guidata dall'AI -- l'agente invia query SQL autonomamente |
You / Agent --> Natural language or SQL
|
/idasql skills (LLM translates intent to SQL)
|
IDASQL --> IDA database(s)
|
Results --> LLM summarizes & reasons
$ idasql -s WerFaultTool.exe.i64 -q "SELECT * FROM funcs LIMIT 5"
Opening: WerFaultTool.exe.i64...
Database opened successfully.
+------+-------------------------------------------------+------+----------+-------+
| addr | name | size | end_addr | flags |
+------+-------------------------------------------------+------+----------+-------+
| 16 | WerFaultTool.AboutForm::.ctor | 13 | 29 | 4096 |
| 32 | WerFaultTool.AboutForm::Dispose | 30 | 62 | 4096 |
| 64 | WerFaultTool.AboutForm::InitializeComponent | 295 | 359 | 4096 |
| 400 | WerFaultTool.WerFaultGUI::.ctor | 936 | 1336 | 4096 |
| 1344 | WerFaultTool.WerFaultGUI::CreateDynamicControls | 231 | 1575 | 4096 |
+------+-------------------------------------------------+------+----------+-------+
5 row(s)
Un comando. Risultati immediati. Nessuno scripting richiesto.
Dopo aver installato la CLI e il plugin IDASQL, avvia il tuo agente di coding preferito e inizia il reverse engineering tramite prompt. IDASQL funziona completamente in modalità headless -- il tuo agente orchestra IDA Pro: avvio, analisi, decompilazione, annotazione, salvataggio -- oppure ospitato all'interno della GUI di IDA dove collabori con il tuo agente in tempo reale.
Apri il tuo agente di coding preferito (ad es. Claude Code) e digita:
/idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
L'agente avvia IDASQL in modalità headless in background. Da questo punto in poi, chatta naturalmente con il database. Ad esempio:
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
Il modello ragiona autonomamente sull'approccio migliore per comprendere la funzione, la decompila completamente e la annota.
Quando hai finito, chiedi all'agente di salvare e spegnersi:
/idasql:connect Please save all databases and shut down IDASQL.
Puoi lavorare con due o più database contemporaneamente. Chiedi al tuo agente:
/idasql:connect In this folder, there are many *.exe files. Please use parallel agents to open IDASQL in the background and report how many functions each has.
Poi segui con:
Tell me, how many strings all these databases have in common?
L'agente lavora con tutti i database contemporaneamente. Puoi fare riferimenti incrociati, confrontare e trasferire annotazioni tra di essi.
Tutto quanto sopra funziona allo stesso modo dalla GUI di IDA. Per coinvolgere il tuo agente con una sessione IDA aperta:
Nel prompt idasql> di IDA, digita:
.http start
Output di IDA:
IDASQL HTTP server: http://127.0.0.1:8174
Nel tuo agente di codifica:
/idasql:connect Let's work with this database: http://127.0.0.1:8174
Ora IDASQL e la tua UI di IDA sono connessi e funzionano insieme.
Con IDA 9.4, le risposte possono collegarsi direttamente a IDA. La tabella deep_links trasforma qualsiasi
funzione, indirizzo, stringa o tipo in un link ida:// nel formato Copy Link di IDA,
più un parametro extra, idb_path, il percorso completo del database. IDA lo ignora; il
click handler di idasql lo usa per avviare IDA sul database corretto. I link alle funzioni aprono
il decompilatore (disassembly senza di esso), gli altri link aprono il disassembly:
SELECT f.name, dl.uri
FROM funcs f
JOIN deep_links dl ON dl.resource = 'functions' AND dl.addr = f.addr AND dl.view = 'pseudocode'
ORDER BY f.size DESC LIMIT 5;
Un agente di codifica li visualizza come nomi cliccabili. Per fare in modo che un clic apra IDA: