
Ein decompiler-agnostisches Plugin für die Interaktion mit KI in deinem Decompiler. GPT-4, Claude und lokale Modelle werden unterstützt!
Der Decompiler Artificially Intelligent Language Assistant (DAILA) ist eine einheitliche Schnittstelle für KI-Systeme zur Verwendung in Decompilern. Mit DAILA können Sie verschiedene KI-Systeme wie lokale und entfernte LLMs in denselben Skript- und GUI-Schnittstellen über viele Decompiler hinweg nutzen. DAILA wurde im Rahmen des Keynote-Vortrags auf HITCON CMT 2023 vorgestellt und wurde in der NDSS-2026-Arbeit "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering" untersucht. Wenn Sie nach dem Repository zu der Arbeit suchen, finden Sie es hier.

Treten Sie unserem Discord unten bei, um weitere Online-Hilfe zu erhalten (gehostet auf dem BinSync-Server):
DAILA interagiert abstrakt mit dem Decompiler über die DecLib-Bibliothek. Dadurch kann DAILA die folgenden Decompiler unterstützen:
DAILA unterstützt jedes LLM, das in unterstützt wird, wie zum Beispiel:
DAILA unterstützt auch lokale Modelle verschiedener Art, wie VarBERT, ein lokales Modell zum Umbenennen von Variablen in der Dekompilierung, das auf der S&P 2024 veröffentlicht wurde.
Installieren Sie unser Bibliotheks-Backend über pip und unser Decompiler-Plugin über unseren Installer:
pip3 install dailalib && daila --install
Dies ist der Light-Modus. Wenn Sie VarBERT verwenden möchten, müssen Sie die Vollversion installieren:
pip3 install 'dailalib[full]' && daila --install
Dadurch werden auch die VarBERT-Modelle für Sie über die VarBERT API heruntergeladen. Falls Sie DAILA auf einem Rechner installieren, der keinen Internetzugang hat, etwa in einem abgesicherten Netzwerk, können Sie unser Docker-Image im Abschnitt Docker-Container verwenden.
Sie müssen einige zusätzliche Schritte ausführen, damit Ghidra funktioniert. Zuerst müssen Sie im PyGhidra-Modus arbeiten. Sie können dies tun,
indem Sie in Ihr Ghidra-Installationsverzeichnis gehen und ./support/pyghidraRun ausführen.
Aktivieren Sie als Nächstes das DAILA-Plugin:
Windows > Script Managerdaila und aktivieren Sie das SkriptSie müssen python3 in Ihrem Pfad haben, damit die Ghidra-Version funktioniert. Wir rufen es buchstäblich aus Python 2 heraus auf.
Möglicherweise müssen Sie auch $USER_HOME/ghidra_scripts als gültigen Skriptpfad in Ghidra aktivieren.
Falls das oben Genannte fehlschlägt, müssen Sie manuell installieren.
Zur manuellen Installation führen Sie zunächst pip3 install dailalib im Repository aus und kopieren Sie dann die Datei daila_plugin.py in das Plugin-Verzeichnis Ihres Decompilers.
DAILA ist für die Verwendung auf zwei Arten konzipiert:
Mit Ausnahme von Ghidra (siehe unten) haben Sie beim Start Ihres Decompilers ein neues Kontextmenü, auf das Sie zugreifen können, wenn Sie irgendwo in einer Funktion rechtsklicken:

Wenn Sie Ghidra verwenden, gehen Sie zu Tools->DAILA->Start DAILA Backend, um den Backend-Server zu starten.
Nachdem Sie dies getan haben, können Sie das Kontextmenü wie oben gezeigt verwenden.
Sie können DAILA in Ihren eigenen Skripten verwenden, indem Sie das Paket dailalib importieren.
Hier ist ein Beispiel mit der OpenAI-API:
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)
Wenn Sie versuchen, DAILA für eine einmalige Installation zu installieren, die nach der Installation kein Internet mehr verwendet, etwa in einem abgesicherten Netzwerk, können Sie unseren Docker-Container verwenden.
Sie sollten den Container entweder selbst bauen, das Image in ein Tarball speichern und es dann auf dem Zielrechner laden, oder Sie können unser vorgefertigtes Image verwenden.
Sie können den Container selbst bauen, indem Sie im Stammverzeichnis dieses Repos docker build . -t daila ausführen.
Sie können unser vorgefertigtes Image auch herunterladen, indem Sie docker pull mahaloz/daila:latest ausführen (das Image ist für x86_64-Linux).
Der Container enthält DAILA und eine Kopie von Ghidra.
Jetzt müssen Sie X11 an den Container weiterleiten, damit Sie die GUI sehen können. Dazu müssen Sie den Container mit den folgenden Flags ausführen:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
Im Container können Sie Ghidra über /tools/ghidra_10.4_PUBLIC/ghidraRun starten.
Befolgen Sie nun die zusätzlichen Schritte für Ghidra, um das DAILA-Plugin zu aktivieren, und schon kann es losgehen!
DAILA unterstützt die LiteLLM-API, die wiederum verschiedene Backends wie OpenAI unterstützt.
Um eine kommerzielle LLM-API zu verwenden, müssen Sie Ihren eigenen API-Schlüssel bereitstellen.
Um beispielsweise die OpenAI-API zu verwenden, benötigen Sie einen OpenAI-API-Schlüssel.
Wenn Ihr Decompiler keinen Zugriff auf die Umgebungsvariable OPENAI_API_KEY hat, müssen Sie die Decompiler-Option von
DAILA verwenden, um den API-Schlüssel festzulegen.
Unter Settings können Sie auch jeden OpenAI-basierten LLM-Endpunkt hinzufügen/verwenden, z. B. Llama2.
Derzeit unterstützt DAILA die folgenden Prompts:
VarBERT ist ein lokales BERT-Modell aus dem S&P-2024-Papier ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning". VarBERT dient zum Umbenennen von Variablen (sowohl Stack-, Register- als auch Argumentvariablen) in der Dekompilierung. Um zu verstehen, wie man VarBERT als Bibliothek verwendet, lesen Sie bitte die Dokumentation der VarBERT API. Die Verwendung in DAILA ist so einfach wie die Verwendung des GUI-Kontextmenüs, wenn Sie auf eine Funktion klicken.
Unten finden Sie eine Demo von VarBERT, das innerhalb von DAILA läuft:
IDA

Binja

Ghidra

angr management
