
Un plugin indipendente dal decompilatore per interagire con l'IA nel tuo decompilatore. Supporta GPT-4, Claude e modelli locali!
DAILA (Decompiler Artificially Intelligent Language Assistant) è un'interfaccia unificata per sistemi di intelligenza artificiale da utilizzare nei decompilatori. Con DAILA, puoi utilizzare vari sistemi di intelligenza artificiale, come LLM locali e remoti, nelle stesse interfacce di scripting e GUI su molti decompilatori. DAILA è stato presentato nel keynote di HITCON CMT 2023 ed è stato studiato nel lavoro NDSS 2026 "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering". Se stai cercando il repository del paper, lo trovi qui.

Unisciti al nostro Discord qui sotto per ulteriore assistenza online (ospitato sul server BinSync):
DAILA interagisce con il decompilatore in modo astratto tramite la libreria DecLib. Questo consente a DAILA di supportare i seguenti decompilatori:
DAILA supporta qualsiasi LLM supportato da LiteLLM, come:
DAILA supporta anche modelli locali di diverso tipo, come VarBERT, un modello locale per rinominare le variabili nella decompilazione pubblicato a S&P 2024.
Installa il backend della nostra libreria tramite pip e il nostro plugin per decompilatori tramite il nostro installer:
pip3 install dailalib && daila --install
Questa è la modalità leggera. Se vuoi usare VarBERT, devi installare la versione completa:
pip3 install 'dailalib[full]' && daila --install
Questo scaricherà anche i modelli VarBERT per te tramite la VarBERT API. Se ti capita di installare DAILA su una macchina che non avrà accesso a internet, come una rete sicura, puoi usare la nostra immagine Docker nella sezione Container Docker.
Devi eseguire alcuni passaggi aggiuntivi per far funzionare Ghidra. Innanzitutto, devi essere in modalità PyGhidra. Puoi farlo andando nella directory di installazione di Ghidra ed eseguendo ./support/pyghidraRun.
Successivamente, abilita il plugin DAILA:
Windows > Script Managerdaila e abilita lo scriptDevi avere python3 nel tuo PATH perché la versione per Ghidra funzioni. Lo chiamiamo letteralmente dall'interno di Python 2.
Potresti anche dover abilitare $USER_HOME/ghidra_scripts come percorso valido per gli script in Ghidra.
Se quanto sopra fallisce, dovrai installare manualmente.
Per installare manualmente, prima esegui pip3 install dailalib nel repository, quindi copia il file daila_plugin.py nella directory dei plugin del tuo decompilatore.
DAILA è progettato per essere utilizzato in due modi:
Con l'eccezione di Ghidra (vedi sotto), all'avvio del tuo decompilatore avrai un nuovo menu contestuale a cui puoi accedere facendo clic con il tasto destro ovunque all'interno di una funzione:
Se stai usando Ghidra, vai su Tools->DAILA->Start DAILA Backend per avviare il server backend.
Dopo aver fatto questo, puoi usare il menu contestuale come mostrato sopra.
Puoi usare DAILA nei tuoi script importando il pacchetto dailalib.
Ecco un esempio che utilizza l'API 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 stai tentando di installare DAILA per un'installazione una tantum che non userà internet dopo l'installazione, come su una rete sicura, puoi usare il nostro container Docker.
Puoi costruire il container da solo, salvare l'immagine in un tarball e poi caricarla sulla macchina di destinazione, oppure puoi usare la nostra immagine precompilata.
Puoi costruire il container da solo eseguendo docker build . -t daila nella root di questo repository.
Puoi anche scaricare la nostra immagine precompilata eseguendo docker pull mahaloz/daila:latest (l'immagine è per Linux x86_64).
Il container contiene DAILA e una copia di Ghidra.
Ora devi inoltrare X11 al container per poter vedere la GUI. Per fare ciò, devi eseguire il container con i seguenti flag:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
All'interno del container, puoi avviare Ghidra da /tools/ghidra_10.4_PUBLIC/ghidraRun.
Ora segui i Passaggi aggiuntivi per Ghidra per abilitare il plugin DAILA e sei a posto!
DAILA supporta l'API LiteLLM, che a sua volta supporta vari backend come OpenAI.
Per utilizzare un'API LLM commerciale, devi fornire la tua chiave API.
Ad esempio, per usare l'API OpenAI, devi avere una chiave API OpenAI.
Se il tuo decompilatore non ha accesso alla variabile d'ambiente OPENAI_API_KEY, devi usare l'opzione del decompilatore di DAILA per impostare la chiave API.
In Settings, puoi anche aggiungere/usare qualsiasi endpoint LLM basato su OpenAI, come Llama2.
Attualmente, DAILA supporta i seguenti prompt:
VarBERT è un modello BERT locale dell'articolo S&P 2024 ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning". VarBERT serve per rinominare le variabili (stack, registro e argomenti) nella decompilazione. Per capire come usare VarBERT come libreria, consulta la documentazione della VarBERT API. Usarlo in DAILA è semplice come usare il menu contestuale della GUI quando si fa clic su una funzione.
Puoi trovare una demo di VarBERT in esecuzione all'interno di DAILA qui sotto:
IDA

Binja

Ghidra

angr management
