
Um plugin agnóstico de decompilador para interagir com IA no seu decompilador. Suporte a GPT-4, Claude e modelos locais!
O Assistente de Linguagem Artificialmente Inteligente para Decompiladores (DAILA) é uma interface unificada para sistemas de IA usados em decompiladores. Com o DAILA, você pode utilizar vários sistemas de IA, como LLMs locais e remotos, todos nas mesmas interfaces de scripting e GUI em diversos decompiladores. O DAILA foi destaque na palestra principal do HITCON CMT 2023 e foi estudado no trabalho da NDSS 2026 "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering". Se você procura o repositório do artigo, encontre-o aqui.

Junte-se ao nosso Discord abaixo para mais ajuda online (hospedado no servidor BinSync):
O DAILA interage com o decompilador de forma abstrata por meio da biblioteca DecLib. Isso permite que o DAILA suporte os seguintes decompiladores:
O DAILA suporta qualquer LLM suportado pelo LiteLLM, como:
O DAILA também suporta modelos locais de diferentes tipos, como o VarBERT, um modelo local para renomear variáveis na decompilação, publicado no S&P 2024.
Instale o backend da nossa biblioteca via pip e o nosso plugin de decompilador através do nosso instalador:
pip3 install dailalib && daila --install
Este é o modo leve. Se você quiser usar o VarBERT, é necessário instalar a versão completa:
pip3 install 'dailalib[full]' && daila --install
Isso também baixará os modelos VarBERT para você através da API VarBERT. Se você estiver instalando o DAILA em uma máquina sem acesso à internet, como em uma rede segura, você pode usar nossa imagem Docker na seção Container Docker.
Você precisa seguir alguns passos extras para fazer o Ghidra funcionar. Primeiro, você deve estar executando no modo PyGhidra. Para fazer isso,
vá até o diretório de instalação do Ghidra e execute ./support/pyghidraRun.
Em seguida, habilite o plugin do DAILA:
Windows > Script Managerdaila e habilite o scriptVocê deve ter python3 no seu PATH para a versão do Ghidra funcionar. Nós literalmente o chamamos de dentro do Python 2.
Talvez você também precise habilitar $USER_HOME/ghidra_scripts como um caminho de scripts válido no Ghidra.
Se o método acima falhar, você precisará instalar manualmente.
Para instalar manualmente, primeiro execute pip3 install dailalib no repositório e, em seguida, copie o arquivo daila_plugin.py para o diretório de plugins do seu decompilador.
O DAILA foi projetado para ser usado de duas maneiras:
Com exceção do Ghidra (veja abaixo), ao iniciar seu decompilador você terá um novo menu de contexto que pode ser acessado clicando com o botão direito em qualquer lugar de uma função:
Se você estiver usando o Ghidra, vá a Tools->DAILA->Start DAILA Backend para iniciar o servidor backend.
Depois de fazer isso, você pode usar o menu de contexto conforme mostrado acima.
Você pode usar o DAILA em seus próprios scripts importando o pacote dailalib.
Aqui está um exemplo usando a API da OpenAI:
from dailalib import LiteLLMAIAPI
from declib.api import DecompilerInterface
deci = DecompilerInterface.discover()
ai_api = LiteLLMAIAPI(decompiler_interface=deci)
for function in deci.functions:
summary = ai_api.summarize_function(function)
Se você estiver tentando instalar o DAILA para uma instalação única que não usará a internet após a instalação, como em uma rede segura, você pode usar nosso contêiner Docker.
Você pode compilar o contêiner você mesmo, salvar a imagem em um tarball e carregá-la na máquina de destino, ou usar nossa imagem pré-construída.
Você pode compilar o contêiner executando docker build . -t daila na raiz deste repositório.
Você também pode baixar nossa imagem pré-construída executando docker pull mahaloz/daila:latest (a imagem é para Linux x86_64).
O contêiner contém o DAILA e uma cópia do Ghidra.
Agora você precisa encaminhar o X11 para o contêiner para poder ver a GUI. Para fazer isso, execute o contêiner com as seguintes flags:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
Dentro do contêiner, você pode iniciar o Ghidra a partir de /tools/ghidra_10.4_PUBLIC/ghidraRun.
Agora siga os Passos Extras para o Ghidra para habilitar o plugin do DAILA e está tudo pronto!
O DAILA suporta a API LiteLLM, que por sua vez suporta vários backends, como OpenAI.
Para usar uma API de LLM comercial, você deve fornecer sua própria chave de API.
Por exemplo, para usar a API OpenAI, você deve ter uma chave de API da OpenAI.
Se o seu decompilador não tiver acesso à variável de ambiente OPENAI_API_KEY, você deve usar a opção do DAILA no decompilador para definir a chave de API.
Em Settings, você também pode adicionar/usar qualquer endpoint de LLM baseado em OpenAI, como o Llama2.
Atualmente, o DAILA suporta os seguintes prompts:
O VarBERT é um modelo BERT local do artigo do S&P 2024 ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning". O VarBERT serve para renomear variáveis (de pilha, registradores e argumentos) na decompilação. Para entender como usar o VarBERT como biblioteca, consulte a documentação da API VarBERT. Usá-lo no DAILA é tão simples quanto usar o menu de contexto da GUI ao clicar em uma função.
Você pode encontrar uma demonstração do VarBERT rodando dentro do DAILA abaixo:
IDA

Binja

Ghidra

angr management
