
oneiromancer v0.9.1
Ассистент для реверс-инжиниринга, использующий локально запущенную LLM для помощи в анализе псевдокода.
oneiromancer
"Большая часть недостатков в разработке программного обеспечения связана с тем, что программисты не до конца понимают все возможные состояния, в которых может выполняться их код." -- John Carmack
"Запустит ли он Doom?" -- https://canitrundoom.org/
Oneiromancer — это ассистент для обратной разработки, использующий локально запущенную LLM, дообученную на псевдокоде Hex-Rays, для помощи в анализе кода. Он может анализировать функцию или небольшой фрагмент кода, возвращая высокоуровневое описание того, что делает код, рекомендуемое имя для функции и предложения по переименованию переменных, основанные на результатах анализа.

Возможности
- Кроссплатформенная поддержка дообученной LLM aidapal на основе
mistral-7b-instruct. - Простая интеграция с извлекателем псевдокода haruspex и популярными IDE.
- Описание кода, рекомендуемое имя функции и предложения по переименованию переменных выводятся в терминал.
- Улучшенный псевдокод каждой проанализированной функции сохраняется в отдельный файл для удобного просмотра.
- Внешние крейты могут вызывать
analyze_codeилиanalyze_fileдля анализа псевдокода и последующей обработки результатов анализа.
Статья
См. также
- https://www.atredis.com/blog/2024/6/3/how-to-train-your-large-language-model
- https://huggingface.co/AverageBusinessUser/aidapal
- https://github.com/atredispartners/aidapal
- https://plugins.hex-rays.com/atredispartners/aidapal
Установка
Самый простой способ получить последний релиз — через crates.io:
cargo install oneiromancer --locked
Чтобы установить как библиотеку, выполните следующую команду в каталоге вашего проекта:
cargo add oneiromancer
Компиляция
Кроме того, вы можете собрать из исходного кода:
git clone --depth 1 https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release --locked
Настройка
- Скачайте и установите Ollama.
- Скачайте дообученные веса и modelfile для Ollama с Hugging Face:
wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal-8k.Q4_K_M.gguf wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal.modelfile - Настройте Ollama, выполнив следующие команды в каталоге, в который вы скачали файлы:
ollama create aidapal -f aidapal.modelfile ollama list
Использование
- Запустите oneiromancer следующим образом:
export OLLAMA_BASEURL=custom_baseurl # if not set, the default will be used export OLLAMA_MODEL=custom_model # if not set, the default will be used oneiromancer <target_file>.c - Найдите улучшенный псевдокод в
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Для лучших результатов отправляйте на анализ LLM по одной функции за раз.
Совместимость
Протестировано с Ollama 0.32.9 на:
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
Благодарности
- Chris Bellows (@AverageBusinessUser) из Atredis Partners за его дообученную LLM
aidapal<3
История изменений
TODO
- Улучшить обработку выходных файлов с помощью версионирования и/или выходного каталога.
- Реализовать другие возможности плагина
aidapalдля IDA Pro на IDAPython (например, контекст). - Интегрировать с haruspex и idalib.
- Реализовать протокол "minority report" (то есть выполнить три запроса и выбрать лучшие ответы).
- Рассмотреть рефакторинг переименования переменных, чтобы предотвратить потенциальное повреждение кода.
- Исследовать другие варианты использования LLM
aidapalи реализовать модульную архитектуру для подключения пользовательских LLM.