
Vibe Reverse Engineer mit IDA Pro: Eine Schnittstelle für IDA in SQL über Live-Virtual-Tables. Lass dich nicht vom Schein täuschen! :)
Gib jedem KI-Agenten die Fähigkeit, kompilierte Binärdateien zu verstehen.
IDASQL ist eine SQL-Schnittstelle für IDA Pro-Datenbanken, erstellt von Elias Bachaalany. Sie stellt über 30 virtuelle Tabellen bereit, die Funktionen, Querverweise, Strings, Typen, Importe, Disassembly und Dekompilierung abdecken. Verwende /idasql-Skills aus deinem Coding-Agenten, um vollständig headless zu arbeiten -- der Agent führt IDA im Hintergrund für dich aus -- oder öffne IDAs UI und arbeite mit deinem Coding-Agenten zusammen, um gemeinsam Reverse Engineering zu betreiben. Kein IDAPython. Kein Scripting. Nur SQL.
Warum SQL? SQL ist die universelle Abfragesprache, die jeder KI-Agent bereits spricht. IDASQL ist agent-agnostisch: Claude, ChatGPT, Copilot, Cursor, benutzerdefinierte Agenten oder gar kein Agent. Jedes Tool, das eine SQL-Abfrage ausgeben kann, kann eine Binärdatei analysieren.
IDASQL unterstützt das Analysieren, Querverweisen und Übertragen von Annotationen zwischen einer oder mehreren Datenbanken gleichzeitig. Was du tun kannst, ist nur durch deine Vorstellungskraft und die Leistungsfähigkeit des von dir verwendeten Modells begrenzt.
IDA Pro hat bereits sein eigenes Datenbankformat, das Funktionen, Strings, Querverweise, Typen und mehr beschreibt. IDASQL bildet diese internen Strukturen auf Live-SQL-virtuelle Tabellen ab. Es gibt keinen separaten Export- oder Indizierungsschritt -- Abfragen werden direkt gegen IDAs Datenbank ausgeführt und Änderungen werden live widergespiegelt.
| Modus | Start | Am besten für |
|---|---|---|
| Standalone CLI | idasql -s binary.i64 -i | Direktes SQL, Scripting, Pipelines |
| IDA Plugin | Wähle idasql aus IDAs CLI-Dropdown | SQL innerhalb der GUI, Live-Datenbank |
| Skill Workflow | /idasql:connect in deiner Coding-CLI | KI-gesteuerte Analyse -- der Agent gibt SQL-Abfragen autonom aus |
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)
Ein Befehl. Sofortige Ergebnisse. Kein Skripting erforderlich.
Nach der Installation der IDASQL CLI und des Plugins starten Sie Ihren bevorzugten Coding-Agenten und beginnen Sie mit dem Reverse Engineering durch Prompts. IDASQL läuft vollständig headless -- Ihr Agent orchestriert IDA Pro: starten, analysieren, dekompilieren, annotieren, speichern -- oder gehostet innerhalb der IDA GUI, wo Sie in Echtzeit mit Ihrem Agenten zusammenarbeiten.
Öffnen Sie Ihren bevorzugten Coding-Agenten (z. B. Claude Code) und geben Sie ein:
/idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
Der Agent startet IDASQL headless im Hintergrund. Ab diesem Zeitpunkt kann man natürlich mit der Datenbank chatten. Zum Beispiel:
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
Das Modell überlegt autonom, welcher Ansatz am besten geeignet ist, um die Funktion zu verstehen, führt vollständiges Reverse Engineering durch und annotiert sie.
Wenn du fertig bist, bitte den Agenten zu speichern und herunterzufahren:
/idasql:connect Please save all databases and shut down IDASQL.
Sie können gleichzeitig mit zwei oder mehr Datenbanken arbeiten. Fordern Sie Ihren Agenten auf:
/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.
Dann folge nach:
Tell me, how many strings all these databases have in common?
Der Agent arbeitet mit allen Datenbanken gleichzeitig. Sie können Anmerkungen zwischen ihnen querverweisen, vergleichen und übertragen.
Alles oben Genannte funktioniert gleichermaßen über die IDA-GUI. Um Ihren Agenten mit einer geöffneten IDA-Sitzung zu verbinden:
Geben Sie in IDAs idasql>-Prompt ein:
.http start
IDA-Ausgaben:
IDASQL HTTP server: http://127.0.0.1:8174
In deinem Coding-Agent:
/idasql:connect Let's work with this database: http://127.0.0.1:8174
Jetzt sind IDASQL und deine IDA-UI verbunden und arbeiten zusammen.
Mit IDA 9.4 können Antworten direkt in IDA verlinken. Die Tabelle deep_links verwandelt jede
Funktion, Adresse, Zeichenkette oder jeden Typ in einen ida://-Link im eigenen Copy-Link-Format von IDA,
plus einen zusätzlichen Parameter, idb_path, den vollständigen Pfad der Datenbank. IDA ignoriert ihn; der
Click-Handler von idasql verwendet ihn, um IDA mit der richtigen Datenbank zu starten. Funktionslinks öffnen
den Decompiler (Disassembly ohne einen), andere Links öffnen 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;
Ein Coding-Agent stellt diese als anklickbare Namen dar. Damit ein Klick IDA öffnet: