
Vibe Reverse Engineer с IDA Pro: интерфейс для IDA в SQL через живые виртуальные таблицы. Не дайте внешности обмануть вас! :)
Дайте любому AI-агенту возможность понимать скомпилированные бинарные файлы.
IDASQL — это SQL-интерфейс для баз данных IDA Pro, созданный Elias Bachaalany. Он предоставляет более 30 виртуальных таблиц, охватывающих функции, перекрёстные ссылки, строки, типы, импорты, дизассемблирование и декомпиляцию. Используйте навыки /idasql из вашего кодирующего агента для полностью headless-работы — агент запускает IDA в фоне за вас — или откройте UI IDA и работайте вместе с вашим кодирующим агентом над обратной разработкой. Никакого IDAPython. Никакого скриптинга. Только SQL.
Почему SQL? SQL — это универсальный язык запросов, на котором уже говорит каждый AI-агент. IDASQL не зависит от конкретного агента: Claude, ChatGPT, Copilot, Cursor, кастомные агенты или вообще без агента. Любой инструмент, способный выполнить SQL-запрос, может анализировать бинарный файл.
IDASQL поддерживает анализ, перекрёстные ссылки и перенос аннотаций между одной или несколькими базами данных одновременно. То, что вы можете сделать, ограничено только вашим воображением и мощью используемой модели.
IDA Pro уже имеет собственный формат базы данных, описывающий функции, строки, перекрёстные ссылки, типы и многое другое. IDASQL отображает эти внутренние структуры на живые виртуальные таблицы SQL. Отдельного этапа экспорта или индексации нет — запросы выполняются напрямую к базе данных IDA, и изменения отражаются в реальном времени.
| Режим | Как запустить | Для чего лучше всего |
|---|---|---|
| Standalone CLI | idasql -s binary.i64 -i | Прямой SQL, скриптинг, конвейеры |
| IDA Plugin | Выберите idasql из выпадающего списка CLI в IDA | SQL внутри GUI, живая база данных |
| Skill Workflow | /idasql:connect в вашем кодирующем CLI | Анализ под управлением AI — агент самостоятельно выполняет SQL-запросы |
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)
Одна команда. Мгновенные результаты. Без необходимости писать скрипты.
После установки IDASQL CLI и плагина запустите своего любимого агента для программирования и начните реверс-инжиниринг с помощью промптов. IDASQL работает полностью в headless-режиме -- ваш агент управляет IDA Pro: запускает, анализирует, декомпилирует, аннотирует, сохраняет -- или размещается внутри GUI IDA, где вы взаимодействуете с агентом в реальном времени.
Откройте своего любимого агента для программирования (например, Claude Code) и введите:
/idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
Агент запускает IDASQL в фоновом режиме без графического интерфейса. С этого момента общайтесь с базой данных естественным образом. Например:
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
Модель автономно рассуждает о наилучшем подходе к пониманию функции, полностью выполняет её реверс-инжиниринг и аннотирует её.
Когда закончите, попросите агента сохранить работу и завершить сеанс:
/idasql:connect Please save all databases and shut down IDASQL.
Вы можете работать с двумя или более базами данных одновременно. Дайте указание вашему агенту:
/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.
Затем выполните следующее:
Tell me, how many strings all these databases have in common?
Агент работает со всеми базами данных одновременно. Вы можете перекрёстно ссылаться, сравнивать и переносить аннотации между ними.
Всё вышеописанное одинаково работает и из графического интерфейса IDA. Чтобы подключить вашего агента к открытой сессии IDA:
В приглашении idasql> в IDA введите:
.http start
Вывод IDA:
IDASQL HTTP server: http://127.0.0.1:8174
В вашем агенте для программирования:
/idasql:connect Let's work with this database: http://127.0.0.1:8174
Теперь IDASQL и ваш интерфейс IDA связаны и работают вместе.
В IDA 9.4 ответы могут ссылаться напрямую в IDA. Таблица deep_links превращает любую
функцию, адрес, строку или тип в ссылку ida:// в собственном формате Copy Link от IDA,
плюс один дополнительный параметр, idb_path — полный путь к базе данных. IDA игнорирует его;
обработчик кликов idasql использует его, чтобы запустить IDA с нужной базой данных. Ссылки на функции открывают
декомпилятор (дизассемблер при его отсутствии), остальные ссылки открывают дизассемблер:
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;
Агент программирования отображает их как кликабельные имена. Чтобы клик открывал IDA:
idasql link register # handle ida:// links (a replaced handler, such as hcli's, is saved)
idasql link unregister # remove it and restore the saved handler
idasql link open -- "ida:///sample.exe.i64/functions?rva=0x1130&view=pseudocode"
idasql link list # running IDA 9.4 instances and their databases