
Ingeniería inversa de Vibe con IDA Pro: una interfaz para IDA en SQL mediante tablas virtuales en vivo. ¡No dejes que las apariencias te engañen! :)
Da a cualquier agente de IA la capacidad de entender binarios compilados.
IDASQL es una interfaz SQL para bases de datos de IDA Pro, creada por Elias Bachaalany. Expone más de 30 tablas virtuales que cubren funciones, referencias cruzadas, cadenas, tipos, importaciones, desensamblado y descompilación. Usa las habilidades /idasql desde tu agente de programación para trabajar completamente sin interfaz gráfica -- el agente ejecuta IDA en segundo plano por ti -- o abre la interfaz de IDA y colabora con tu agente de programación para hacer ingeniería inversa juntos. Sin IDAPython. Sin scripting. Solo SQL.
¿Por qué SQL? SQL es el lenguaje de consulta universal que todo agente de IA ya habla. IDASQL es agnóstico al agente: Claude, ChatGPT, Copilot, Cursor, agentes personalizados, o ningún agente en absoluto. Cualquier herramienta que pueda emitir una consulta SQL puede analizar un binario.
IDASQL soporta analizar, referenciar cruzadamente y transferir anotaciones entre una o más bases de datos al mismo tiempo. Lo que puedes hacer está limitado solo por tu imaginación y el poder del modelo que uses.
IDA Pro ya tiene su propio formato de base de datos que describe funciones, cadenas, referencias cruzadas, tipos y más. IDASQL mapea estas estructuras internas a tablas virtuales SQL en vivo. No hay un paso separado de exportación o indexación -- las consultas se ejecutan directamente contra la base de datos de IDA y los cambios se reflejan en vivo.
| Modo | Cómo iniciar | Ideal para |
|---|---|---|
| CLI Independiente | idasql -s binary.i64 -i | SQL directo, scripting, pipelines |
| Plugin de IDA | Selecciona idasql desde el menú desplegable de CLI de IDA | SQL dentro de la interfaz gráfica, base de datos en vivo |
| Flujo de Trabajo con Habilidades | /idasql:connect en tu CLI de programación | Análisis impulsado por IA -- el agente emite consultas SQL de forma autónoma |
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. Resultados instantáneos. Sin necesidad de scripting.
Después de instalar el CLI y el plugin de IDASQL, inicia tu agente de programación favorito y comienza la ingeniería inversa mediante prompts. IDASQL se ejecuta completamente sin interfaz gráfica -- tu agente orquesta IDA Pro: iniciar, analizar, descompilar, anotar, guardar -- o alojado dentro de la GUI de IDA donde colaboras con tu agente en tiempo real.
Abre tu agente de programación favorito (por ejemplo, Claude Code) y escribe:
/idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
El agente inicia IDASQL en segundo plano sin interfaz gráfica. A partir de este punto, conversa con la base de datos de forma natural. Por ejemplo:
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
El modelo razona de forma autónoma sobre el mejor enfoque para comprender la función, la realiza ingeniería inversa por completo y la anota.
Cuando hayas terminado, pídele al agente que guarde y se apague:
/idasql:connect Please save all databases and shut down IDASQL.
Puedes trabajar con dos o más bases de datos simultáneamente. Indica a tu 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.
Luego continúa:
Tell me, how many strings all these databases have in common?
El agente trabaja con todas las bases de datos al mismo tiempo. Puedes hacer referencias cruzadas, comparar y transferir anotaciones entre ellas.
Todo lo anterior funciona igualmente desde la interfaz gráfica de IDA. Para conectar tu agente con una sesión de IDA abierta:
En el prompt idasql> de IDA, escribe:
.http start
Salidas de IDA:
IDASQL HTTP server: http://127.0.0.1:8174
En tu agente de programación:
/idasql:connect Let's work with this database: http://127.0.0.1:8174
Ahora IDASQL y tu interfaz de IDA están conectados y funcionando juntos.
Con IDA 9.4, las respuestas pueden enlazar directamente a IDA. La tabla deep_links convierte cualquier
función, dirección, cadena o tipo en un enlace ida:// en el propio formato Copy Link de IDA,
más un parámetro adicional, idb_path, la ruta completa de la base de datos. IDA lo ignora; el
manejador de clics de idasql lo usa para iniciar IDA en la base de datos correcta. Los enlaces de funciones abren
el descompilador (el desensamblado si no hay uno), otros enlaces abren el desensamblado:
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 de codificación los muestra como nombres en los que se puede hacer clic. Para que al hacer clic se abra IDA: