
Un plugin independiente del descompilador para interactuar con IA en tu descompilador. ¡GPT-4, Claude y modelos locales compatibles!
DAILA (Decompiler Artificially Intelligent Language Assistant) es una interfaz unificada para sistemas de IA utilizados en descompiladores. Con DAILA, puedes utilizar varios sistemas de IA, como LLM locales y remotos, todo en las mismas interfaces de scripting y GUI en muchos descompiladores. DAILA se presentó en la charla principal de HITCON CMT 2023 y fue estudiado en el trabajo de NDSS 2026 "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering". Si buscas el repositorio del artículo, puedes encontrarlo aquí.

Únete a nuestro Discord a continuación para obtener más ayuda en línea (alojado en el servidor de BinSync):
DAILA interactúa con el descompilador de forma abstracta a través de la librería DecLib. Esto permite que DAILA sea compatible con los siguientes descompiladores:
DAILA es compatible con cualquier LLM soportado por LiteLLM, como:
DAILA también admite modelos locales de distintos tipos, como VarBERT, un modelo local para renombrar variables en la descompilación publicado en S&P 2024.
Instala nuestro backend de librería mediante pip y nuestro plugin de descompilador mediante nuestro instalador:
pip3 install dailalib && daila --install
Este es el modo ligero. Si quieres usar VarBERT, debes instalar la versión completa:
pip3 install 'dailalib[full]' && daila --install
Esto también descargará los modelos VarBERT por ti a través de la VarBERT API. Si vas a instalar DAILA en una máquina que no tendrá acceso a internet, como una red segura, puedes usar nuestra imagen Docker en la sección Contenedor Docker.
Necesitas hacer algunos pasos adicionales para que Ghidra funcione. Primero, debes estar ejecutando en modo PyGhidra. Puedes hacerlo
yendo a tu directorio de instalación de Ghidra y ejecutando ./support/pyghidraRun.
A continuación, habilita el plugin DAILA:
Windows > Script Managerdaila y habilita el scriptDebes tener python3 en tu path para que la versión de Ghidra funcione. Literalmente lo invocamos desde Python 2.
También puede que necesites habilitar $USER_HOME/ghidra_scripts como una ruta de scripts válida en Ghidra.
Si lo anterior falla, necesitarás realizar una instalación manual.
Para instalarlo manualmente, primero ejecuta pip3 install dailalib en el repositorio y luego copia el archivo daila_plugin.py al directorio de plugins de tu descompilador.
DAILA está diseñado para usarse de dos maneras:
Con la excepción de Ghidra (ver más abajo), al iniciar tu descompilador tendrás un nuevo menú contextual al que puedes acceder haciendo clic derecho en cualquier lugar de una función:

Si usas Ghidra, ve a Tools->DAILA->Start DAILA Backend para iniciar el servidor backend.
Después de hacer esto, puedes usar el menú contextual como se muestra arriba.
Puedes usar DAILA en tus propios scripts importando el paquete dailalib.
Aquí tienes un ejemplo usando la API de 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 intentas instalar DAILA para una instalación única que no usará internet después de instalar, como en una red segura, puedes usar nuestro contenedor Docker.
Puedes compilar el contenedor tú mismo, guardar la imagen en un tarball y luego cargarla en la máquina de destino, o puedes usar nuestra imagen precompilada.
Puedes compilar el contenedor tú mismo ejecutando docker build . -t daila en la raíz de este repositorio.
También puedes descargar nuestra imagen precompilada ejecutando docker pull mahaloz/daila:latest (la imagen es para Linux x86_64).
El contenedor contiene DAILA y una copia de Ghidra.
Ahora necesitas reenviar X11 al contenedor para poder ver la GUI. Para ello, necesitas ejecutar el contenedor con las siguientes opciones:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
En el contenedor, puedes lanzar Ghidra desde /tools/ghidra_10.4_PUBLIC/ghidraRun.
Ahora sigue los pasos adicionales para Ghidra para habilitar el plugin DAILA y ¡listo!
DAILA es compatible con la API de LiteLLM, que a su vez soporta varios backends como OpenAI.
Para usar una API LLM comercial, debes proporcionar tu propia clave de API.
Por ejemplo, para usar la API de OpenAI, debes tener una clave de API de OpenAI.
Si tu descompilador no tiene acceso a la variable de entorno OPENAI_API_KEY, entonces debes usar la opción de DAILA en tu descompilador para establecer la clave de API.
En Settings, también puedes añadir/usar cualquier endpoint de LLM basado en OpenAI, como usar Llama2.
Actualmente, DAILA admite los siguientes prompts:
VarBERT es un modelo BERT local del artículo de S&P 2024 ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning". VarBERT se utiliza para renombrar variables en la descompilación (tanto las de pila y las de registro como los argumentos). Para entender cómo usar VarBERT como librería, consulta la documentación de la VarBERT API. Usarlo en DAILA es tan sencillo como usar el menú contextual de la GUI al hacer clic en una función.
Puedes encontrar una demo de VarBERT ejecutándose dentro de DAILA a continuación:
IDA

Binja

Ghidra

angr management
