
Un plugin indépendant du décompilateur pour interagir avec l'IA dans votre décompilateur. GPT-4, Claude et les modèles locaux sont pris en charge !
Le Decompiler Artificially Intelligent Language Assistant (DAILA) est une interface unifiée pour les systèmes d'IA utilisés dans les décompilateurs. Avec DAILA, vous pouvez utiliser divers systèmes d'IA, comme les LLM locaux et distants, dans les mêmes interfaces de script et graphiques (GUI) sur de nombreux décompilateurs. DAILA a été présenté lors du keynote de HITCON CMT 2023 et a fait l'objet d'une étude dans les travaux NDSS 2026 intitulés "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering". Si vous cherchez le dépôt de l'article, vous le trouverez ici.

Rejoignez notre Discord ci-dessous pour obtenir de l'aide en ligne (hébergé sur le serveur BinSync) :
DAILA interagit avec le décompilateur de manière abstraite via la bibliothèque DecLib. Cela permet à DAILA de prendre en charge les décompilateurs suivants :
DAILA prend en charge tout LLM pris en charge par LiteLLM, comme :
DAILA prend également en charge des modèles locaux de différents types, comme VarBERT, un modèle local de renommage des variables dans la décompilation publié lors de S&P 2024.
Installez notre backend de bibliothèque via pip et notre plugin de décompilateur via notre installeur :
pip3 install dailalib && daila --install
Il s'agit du mode léger. Si vous souhaitez utiliser VarBERT, vous devez installer la version complète :
pip3 install 'dailalib[full]' && daila --install
Cela téléchargera également les modèles VarBERT pour vous via l'API VarBERT. Si vous installez DAILA sur une machine sans accès à Internet, comme sur un réseau sécurisé, vous pouvez utiliser notre image Docker dans la section Docker Container.
Vous devez effectuer quelques étapes supplémentaires pour que Ghidra fonctionne. Tout d'abord, vous devez être en mode PyGhidra. Pour ce faire,
accédez à votre répertoire d'installation de Ghidra et exécutez ./support/pyghidraRun.
Ensuite, activez le plugin DAILA :
Windows > Script Managerdaila et activez le scriptVous devez avoir python3 dans votre PATH pour que la version Ghidra fonctionne. Nous l'appelons littéralement depuis Python 2.
Vous devrez peut-être aussi activer $USER_HOME/ghidra_scripts comme chemin de scripts valide dans Ghidra.
Si ce qui précède échoue, vous devrez installer manuellement.
Pour installer manuellement, exécutez d'abord pip3 install dailalib dans le dépôt, puis copiez le fichier daila_plugin.py dans le répertoire des plugins de votre décompilateur.
DAILA est conçu pour être utilisé de deux manières :
À l'exception de Ghidra (voir ci-dessous), lorsque vous démarrez votre décompilateur, vous disposez d'un nouveau menu contextuel auquel vous pouvez accéder en cliquant avec le bouton droit n'importe où dans une fonction :

Si vous utilisez Ghidra, accédez à Tools->DAILA->Start DAILA Backend pour démarrer le serveur backend.
Une fois cela fait, vous pouvez utiliser le menu contextuel comme indiqué ci-dessus.
Vous pouvez utiliser DAILA dans vos propres scripts en important le package dailalib.
Voici un exemple utilisant 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)
Si vous essayez d'installer DAILA pour une installation unique qui n'utilisera pas Internet après l'installation, par exemple sur un réseau sécurisé, vous pouvez utiliser notre conteneur Docker.
Vous pouvez soit construire vous-même le conteneur, enregistrer l'image dans une archive, puis la charger sur la machine cible, soit utiliser notre image pré-construite.
Vous pouvez construire le conteneur vous-même en exécutant docker build . -t daila à la racine de ce dépôt.
Vous pouvez également télécharger notre image pré-construite en exécutant docker pull mahaloz/daila:latest (l'image est pour Linux x86_64).
Le conteneur contient DAILA et une copie de Ghidra.
Vous devez maintenant transférer X11 vers le conteneur afin de pouvoir voir l'interface graphique. Pour ce faire, vous devez exécuter le conteneur avec les options suivantes :
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
Dans le conteneur, vous pouvez lancer Ghidra depuis /tools/ghidra_10.4_PUBLIC/ghidraRun.
Suivez maintenant les étapes supplémentaires pour Ghidra pour activer le plugin DAILA et le tour est joué !
DAILA prend en charge l'API LiteLLM, qui prend elle-même en charge divers backends comme OpenAI.
Pour utiliser une API LLM commerciale, vous devez fournir votre propre clé API.
Par exemple, pour utiliser l'API OpenAI, vous devez disposer d'une clé API OpenAI.
Si votre décompilateur n'a pas accès à la variable d'environnement OPENAI_API_KEY, vous devez utiliser l'option du décompilateur dans
DAILA pour définir la clé API.
Dans Settings, vous pouvez également ajouter/utiliser n'importe quel point de terminaison LLM basé sur OpenAI, comme Llama2.
Actuellement, DAILA prend en charge les prompts suivants :
VarBERT est un modèle BERT local issu de l'article S&P 2024 ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning". VarBERT est destiné au renommage des variables (qu'elles soient sur la pile, dans les registres ou les arguments) dans la décompilation. Pour comprendre comment utiliser VarBERT en tant que bibliothèque, veuillez consulter la documentation de l'API VarBERT. Son utilisation dans DAILA est aussi simple que d'utiliser le menu contextuel de l'interface graphique en cliquant sur une fonction.
Vous trouverez ci-dessous une démo de VarBERT fonctionnant dans DAILA :
IDA

Binja

Ghidra

angr management
