
oneiromancer v0.9.1
Ассистент для реверс-инжиниринга, использующий локально запущенную LLM для помощи в анализе псевдокода.
oneiromancer
«Бо́льшая часть ошибок в разработке программного обеспечения возникает из-за того, что программисты не до конца понимают все возможные состояния, в которых может выполняться их код». — Джон Кармак
«Может ли он запустить 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
Чтобы установить как библиотеку, выполните следующую команду в каталоге вашего проекта:
cargo add oneiromancer
Сборка
Как вариант, вы можете собрать из исходного кода:
git clone https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release
Настройка
- Загрузите и установите 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
Благодарности
- Крис Беллоуз (@AverageBusinessUser) из Atredis Partners за его дообученную LLM
aidapal<3
Журнал изменений
TODO
- Улучшить обработку выходных файлов с помощью версионирования и/или отдельного каталога для выходных данных.
- Реализовать другие возможности плагина
aidapalдля IDA Pro (например, контекст). - Интегрировать с haruspex и idalib.
- Реализовать протокол «особого мнения» (то есть выполнять три запроса и выбирать лучшие ответы).
- Рассмотреть рефакторинг переименования переменных для предотвращения возможного повреждения кода.
- Исследовать другие варианты использования LLM
aidapalи реализовать модульную архитектуру для подключения пользовательских LLM.