
Engenharia Reversa com Vibe no IDA Pro: Uma interface para o IDA em SQL através de tabelas virtuais ao vivo. Não se deixe enganar pelas aparências! :)
Dê a qualquer agente de IA a capacidade de entender binários compilados.
IDASQL é uma interface SQL para bancos de dados do IDA Pro, criada por Elias Bachaalany. Ela expõe mais de 30 tabelas virtuais cobrindo funções, referências cruzadas, strings, tipos, imports, disassembly e descompilação. Use as skills /idasql do seu agente de codificação para trabalhar totalmente sem interface gráfica -- o agente executa o IDA em segundo plano para você -- ou abra a UI do IDA e colabore com seu agente de codificação para fazer engenharia reversa juntos. Sem IDAPython. Sem scripting. Apenas SQL.
Por que SQL? SQL é a linguagem de consulta universal que todo agente de IA já fala. O IDASQL é agnóstico em relação ao agente: Claude, ChatGPT, Copilot, Cursor, agentes personalizados, ou nenhum agente. Qualquer ferramenta que possa emitir uma consulta SQL pode analisar um binário.
O IDASQL suporta análise, referência cruzada e transferência de anotações entre um ou mais bancos de dados ao mesmo tempo. O que você pode fazer é limitado apenas pela sua imaginação e pelo poder do modelo que você usa.
O IDA Pro já possui seu próprio formato de banco de dados que descreve funções, strings, referências cruzadas, tipos e muito mais. O IDASQL mapeia essas estruturas internas para tabelas virtuais SQL ativas. Não há etapa separada de exportação ou indexação -- as consultas são executadas diretamente no banco de dados do IDA e as alterações são refletidas em tempo real.
| Modo | Como iniciar | Melhor para |
|---|---|---|
| CLI Autônomo | idasql -s binary.i64 -i | SQL direto, scripting, pipelines |
| Plugin do IDA | Selecione idasql no menu suspenso da CLI do IDA | SQL dentro da GUI, banco de dados ativo |
| Fluxo de Trabalho com Skill | /idasql:connect na sua CLI de codificação | Análise orientada por IA -- o 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)
Um comando. Resultados instantâneos. Sem necessidade de scripting.
Depois de instalar o CLI e o plugin do IDASQL, inicie seu agente de codificação favorito e comece a engenharia reversa por meio de prompts. O IDASQL é executado totalmente sem interface gráfica -- seu agente orquestra o IDA Pro: iniciando, analisando, descompilando, anotando, salvando -- ou hospedado dentro da GUI do IDA, onde você colabora com seu agente em tempo real.
Abra seu agente de codificação favorito (por exemplo, Claude Code) e digite:
/idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
O agente inicia o IDASQL em segundo plano, sem interface gráfica. A partir deste ponto, converse naturalmente com o banco de dados. Por exemplo:
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
O modelo raciocina autonomamente sobre a melhor abordagem para compreender a função, faz engenharia reversa completa dela e a anota.
Quando terminar, peça ao agente para salvar e encerrar:
/idasql:connect Please save all databases and shut down IDASQL.
Você pode trabalhar com dois ou mais bancos de dados simultaneamente. Instrua seu 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.
Em seguida, continue:
Tell me, how many strings all these databases have in common?
O agente trabalha com todos os bancos de dados ao mesmo tempo. Você pode fazer referência cruzada, comparar e transferir anotações entre eles.
Tudo o que foi descrito acima funciona igualmente a partir da GUI do IDA. Para conectar seu agente a uma sessão do IDA aberta:
No prompt idasql> do IDA, digite:
.http start
Saídas do IDA:
IDASQL HTTP server: http://127.0.0.1:8174
No seu agente de codificação:
/idasql:connect Let's work with this database: http://127.0.0.1:8174
Agora o IDASQL e a sua interface do IDA estão conectados e a funcionar em conjunto.
Com o IDA 9.4, as respostas podem ligar diretamente ao IDA. A tabela deep_links transforma qualquer
função, endereço, string ou tipo num link ida:// no próprio formato Copy Link do IDA,
mais um parâmetro extra, idb_path, o caminho completo da base de dados. O IDA ignora-o; o
click handler do idasql usa-o para iniciar o IDA na base de dados correta. Os links de funções abrem o
decompilador (desassemblagem sem um), outros links abrem a desassemblagem:
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;
Um agente de codificação renderiza estes como nomes clicáveis. Para fazer um clique abrir o IDA: