
Плагин, не зависящий от конкретного декомпилятора, для взаимодействия с ИИ в вашем декомпиляторе. Поддерживаются GPT-4, Claude и локальные модели!
The Decompiler Artificially Intelligent Language Assistant (DAILA) — это унифицированный интерфейс для использования AI-систем в декомпиляторах. С помощью DAILA вы можете использовать различные AI-системы, такие как локальные и удалённые LLM, в одних и тех же скриптовых и GUI-интерфейсах во множестве декомпиляторов. DAILA была представлена в программном докладе на HITCON CMT 2023 и была исследована в работе NDSS 2026 "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering". Если вы ищете репозиторий с исследованием, он находится здесь.

Присоединяйтесь к нашему Discord ниже для дополнительной онлайн-помощи (размещён на сервере BinSync):
DAILA взаимодействует с декомпилятором абстрактно через библиотеку DecLib. Это позволяет DAILA поддерживать следующие декомпиляторы:
DAILA поддерживает любые LLM, поддерживаемые , такие как:
DAILA также поддерживает локальные модели различных типов, например VarBERT — локальную модель для переименования переменных в декомпилированном коде, опубликованную на S&P 2024.
Установите наш библиотечный бэкенд через pip и плагин для декомпилятора через наш установщик:
pip3 install dailalib && daila --install
Это облегчённый режим. Если вы хотите использовать VarBERT, необходимо установить полную версию:
pip3 install 'dailalib[full]' && daila --install
При этом также будут загружены модели VarBERT через VarBERT API. Если вы устанавливаете DAILA на машину без доступа к интернету, например в защищённой сети, вы можете использовать наш Docker-образ из раздела Docker Container.
Чтобы Ghidra заработал, нужно выполнить несколько дополнительных шагов. Во-первых, вы должны работать в режиме PyGhidra. Для этого
перейдите в каталог установки Ghidra и запустите ./support/pyghidraRun.
Затем включите плагин DAILA:
Windows > Script Managerdaila и включите скриптДля работы версии Ghidra необходимо, чтобы python3 присутствовал в вашем PATH. Мы в буквальном смысле вызываем его из Python 2.
Возможно, вам также потребуется добавить $USER_HOME/ghidra_scripts как допустимый путь для скриптов в Ghidra.
Если вышеуказанное не сработало, вам потребуется установить вручную.
Для ручной установки сначала выполните pip3 install dailalib в репозитории, затем скопируйте файл daila_plugin.py в каталог плагинов вашего декомпилятора.
DAILA предназначена для использования двумя способами:
За исключением Ghidra (см. ниже), при запуске декомпилятора у вас появится новое контекстное меню, которое доступно при щелчке правой кнопкой мыши в любом месте функции:

Если вы используете Ghidra, перейдите в Tools->DAILA->Start DAILA Backend, чтобы запустить бэкенд-сервер.
После этого вы можете использовать контекстное меню, как показано выше.
Вы можете использовать DAILA в своих скриптах, импортировав пакет dailalib.
Вот пример использования 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)
Если вы пытаетесь установить DAILA для разовой установки, после которой интернет использоваться не будет, например в защищённой сети, вы можете воспользоваться нашим Docker-контейнером.
Вы можете либо собрать контейнер самостоятельно, сохранить образ в tar-архив, а затем загрузить его на целевую машину, либо использовать наш готовый образ.
Вы можете собрать контейнер самостоятельно, выполнив docker build . -t daila в корне этого репозитория.
Вы также можете загрузить наш готовый образ, выполнив docker pull mahaloz/daila:latest (образ предназначен для x86_64 Linux).
Контейнер содержит DAILA и копию Ghidra.
Теперь вам нужно пробросить X11 в контейнер, чтобы видеть GUI. Для этого запустите контейнер со следующими флагами:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
В контейнере вы можете запустить Ghidra из /tools/ghidra_10.4_PUBLIC/ghidraRun.
Затем следуйте разделу Дополнительные шаги для Ghidra, чтобы включить плагин DAILA — и всё готово!
DAILA поддерживает API LiteLLM, который, в свою очередь, поддерживает различные бэкенды, такие как OpenAI.
Для использования коммерческого LLM API необходимо предоставить собственный API-ключ.
Например, для использования OpenAI API вам понадобится ключ OpenAI API.
Если ваш декомпилятор не имеет доступа к переменной окружения OPENAI_API_KEY, вы должны использовать опцию DAILA
для установки API-ключа.
В Settings вы также можете добавить/использовать любую LLM-конечную точку на основе OpenAI, например Llama2.
В настоящее время DAILA поддерживает следующие промпты:
VarBERT — это локальная модель BERT из статьи S&P 2024 ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning". VarBERT предназначена для переименования переменных (стековых, регистровых и аргументов) в декомпилированном коде. Чтобы узнать, как использовать VarBERT в качестве библиотеки, обратитесь к документации VarBERT API. Использовать её в DAILA так же просто, как контекстное меню GUI при щелчке по функции.
Ниже вы можете найти демо работы VarBERT внутри DAILA:
IDA

Binja

Ghidra

angr management
