
Плагин для Binary Ninja, который интегрирует локальные модели Ollama для переименования функций и переменных в декомпилированном коде HLIL, сохраняя конфиденциальность за счёт полностью локального и офлайн-анализа.
Автор: Austin Haggard
Binary Ninja Ollama интегрируется с вашим локально размещённым сервером ollama, чтобы переименовывать функции и переменные с помощью ИИ
Ollama — это инструмент, который позволяет загружать модели ИИ с открытым исходным кодом и запускать их локально. Некоторым моделям требуется значительная вычислительная мощность, тогда как другие могут работать на вашем личном ноутбуке. Результаты будут сильно различаться в зависимости от выбранной вами модели :).
Почему стоит использовать это вместо sidekick/openai?
Этот плагин интегрирует Ollama с Binary Ninja и поддерживает перечисленные ниже действия:
Если вы устанавливаете это как отдельный плагин, вы можете поместить (или создать симлинк) его в папку плагинов Binary Ninja. Пути по умолчанию описаны в документации Vector 35.
ollama, установленный с помощью pip3 install ollamaЭто требует, чтобы у вас был доступ к собственному серверу ollama или вы размещали его самостоятельно, а также загрузили любые модели, которые хотите использовать.
Следуйте инструкциям на https://ollama.com, чтобы настроить сервер и загрузить любые модели, которые хотите попробовать. После этого сервер должен автоматически запуститься, и к нему можно будет обращаться через localhost:11434.
Вариант переименования всех переменных функции проанализирует все переменные внутри функции и попытается переименовать их на основе следующего запроса:
prompt = (
f"In one word, what should the variable '{variable}' be named in the below Function? "
f"The name must meet the following criteria: all lowercase letters, usable in Python code"
)

Вариант переименования всех функций будет последовательно перебирать все функции в binaryview, от наименьшей к наибольшей, и переименовывать их на основе запроса:
prompt = (
f"Given the following HLIL decompiled code snippet, provide a Python-style function name that describes what the code is doing. "
f"The name must meet the following criteria: all lowercase letters, usable in Python code, with underscores between words. "
f"Only return the function name and no other explanation or text data included."
)

Переименование целевой функции использует тот же запрос, что и переименование всех функций, но ограничивает его выбранной функцией при запуске плагина.
Переименование целевой переменной использует тот же запрос, что и переименование всех переменных, но ограничивает его выбранной функцией при запуске плагина.
Настройки вызываются при первом обращении к любой операции переименования при первом запуске binary ninja или при ручном вызове. Применённые настройки сохраняются в течение сеанса binary ninja.
Окно настроек позволяет указать IP-адрес, порт и модель для использования в ollama. Выбрать можно только загруженные модели.

Что-то, что вас интересует, но отсутствует в плагине?
Идеи:
Этот плагин выпущен под лицензией MIT.