Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Gepetto — Плагин для IDA, который обращается к языковым моделям, чтобы ускорить реверс-инжиниринг. | Kitploit
Инструменты/GitHubGitHub/justicerage/gepetto
Анализ КодаОбратная инженерияАнализ Бинарных ФайловМашинное ОбучениеОбратная Разработка с Помощью ИИ
GitHubjusticerage/gepetto

Gepetto

Плагин для IDA, который обращается к языковым моделям, чтобы ускорить реверс-инжиниринг.

Репозиторий
3.5k332552 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Gepetto

Gepetto — это плагин для Python, который использует различные большие языковые модели, чтобы придать смысл функциям, декомпилированным с помощью IDA Pro (≥ 7.6). Он может задействовать их, чтобы объяснить, что делает функция, и автоматически переименовывать её переменные. Вот простой пример того, какие результаты он может выдать всего за несколько секунд:

Установка

Использование hcli (рекомендуется)

Самый простой способ установить Gepetto — использовать инструмент командной строки Hex-Rays (hcli):

pip install ida-hcli
hcli plugin install gepetto

Это автоматически установит плагин в ваш пользовательский каталог IDA.

Ручная установка

В качестве альтернативы вы можете установить плагин вручную:

  1. Поместите этот скрипт (gepetto.py, а также папку gepetto/) в папку плагинов IDA ($IDAUSR/plugins).
  2. Расположение каталога плагинов зависит от вашей системы:
    • Windows: %APPDATA%\Hex-Rays\IDA Pro\plugins\
    • macOS: ~/.idapro/plugins/
    • Linux: ~/.idapro/plugins/
  3. Установите необходимые пакеты в Python-окружение IDA. Определите, какой интерпретатор использует IDA, проверив следующий раздел реестра: Computer\HKEY_CURRENT_USER\Software\Hex-Rays\IDA (по умолчанию в Windows: %LOCALAPPDATA%\Programs\Python\Python39).
  4. С помощью соответствующего интерпретатора просто выполните:
    [/path/to/python] -m pip install -r requirements.txt
    

Конфигурация

Gepetto хранит свою конфигурацию в вашем пользовательском каталоге IDA, поэтому она сохраняется при обновлении плагина:

  • Windows: %APPDATA%\Hex-Rays\IDA Pro\cfg\gepetto\config.ini
  • macOS / Linux: ~/.idapro/cfg/gepetto/config.ini

При первом запуске плагин копирует туда gepetto/config.ini и сообщает вам путь в консоли. После этого копия, поставляемая с плагином, является лишь шаблоном — редактируйте ту, что находится в вашем пользовательском каталоге. Задайте GEPETTO_CONFIG_DIR, чтобы полностью переопределить расположение.

Добавьте свои API-ключи в этот файл или передайте их через переменные окружения, указанные в нём. Для OpenAI ключ можно создать на этой странице. Обратите внимание, что API-запросы обычно не бесплатны (хотя и не очень дороги), и вам потребуется настроить способ оплаты у соответствующего провайдера.

Поддерживаемые модели

  • Anthropic
    • claude-opus-4-7
    • claude-sonnet-4-6
    • claude-haiku-4-5
  • OpenAI
    • gpt-5
    • gpt-5-mini
    • gpt-5-nano
    • gpt-4-turbo
    • gpt-4o
    • o4-mini
    • gpt-4.1
    • o3
    • o3-pro
  • Google Gemini
    • gemini-2.0-flash
    • gemini-2.5-pro
    • gemini-2.5-flash
    • gemini-2.5-flash-lite-preview-06-17
  • Azure OpenAI
    • gpt-35-turbo
    • gpt-35-turbo-1106
    • gpt-35-turbo-16k
    • gpt-4-turbo
    • gpt-4-turbo-2024-0409-gs
  • Ollama
    • Любая локальная модель, доступная через Ollama (не отображается, если Ollama не запущена)
  • Groq
    • llama-3.1-70b-versatile
    • llama-3.2-90b-text-preview
    • mixtral-8x7b-32768
  • Together
    • mistralai/Mixtral-8x22B-Instruct-v0.1 (не поддерживает переименование переменных)
  • Novita AI
    • deepseek/deepseek-r1
    • deepseek/deepseek-v3
    • meta-llama/llama-3.3-70b-instruct
    • meta-llama/llama-3.1-70b-instruct
    • meta-llama/llama-3.1-405b-instruct
  • Kluster.ai
    • deepseek-ai/DeepSeek-R1
    • deepseek-ai/DeepSeek-V3-0324
    • google/gemma-3-27b-it
    • klusterai/Meta-Llama-3.1-8B-Instruct-Turbo
    • klusterai/Meta-Llama-3.1-405B-Instruct-Turbo
    • klusterai/Meta-Llama-3.3-70B-Instruct-Turbo
    • meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8
    • meta-llama/Llama-4-Scout-17B-16E-Instruct
    • Qwen/Qwen2.5-VL-7B-Instruct
  • LM Studio
    • Любая локальная модель, доступная через LM Studio (не отображается, если сервер LM Studio Developer не запущен)

Добавление собственного провайдера

Gepetto загружает провайдеров из трёх мест, причём каждый следующий переопределяет предыдущий при совпадении имени в меню: модули, поставляемые в gepetto/models/, затем любой .py-файл в $IDAUSR/cfg/gepetto/providers/, затем любой установленный дистрибутив, объявляющий точку входа gepetto.providers. Переопределения объявляются в консоли, так что вы можете заменить встроенного провайдера, не форкая плагин.

Подключаемый провайдер использует ровно тот же контракт, что и встроенный. Для OpenAI-совместимой конечной точки весь файл выглядит так:

import openai
import gepetto.config
import gepetto.models.model_manager
from gepetto.models.openai import GPT


class MyProvider(GPT):
    @staticmethod
    def get_menu_name() -> str:
        return "MyProvider"

    @staticmethod
    def supported_models():
        return ["my-model-v1"]

    @staticmethod
    def is_configured_properly() -> bool:
        return bool(gepetto.config.get_config("MyProvider", "API_KEY", "MYPROVIDER_API_KEY"))

    def __init__(self, model):
        try:
            super().__init__(model)
        except ValueError:
            pass  # No OpenAI key needed for this provider.
        self.model = model
        self.client = openai.OpenAI(
            api_key=gepetto.config.get_config("MyProvider", "API_KEY", "MYPROVIDER_API_KEY"),
            base_url="https://api.example.com/v1",
        )


gepetto.models.model_manager.register_model(MyProvider)

Добавьте соответствующий раздел [MyProvider] в ваш config.ini и перезапустите IDA: провайдеры регистрируются при загрузке, поэтому новый ключ или новый файл требует перезапуска, прежде чем он появится в меню.

Чтобы поставлять его как пакет, вместо этого предоставьте класс или вызываемый объект register(register_model):

[project.entry-points."gepetto.providers"]
myprovider = "myprovider:MyProvider"

Файлы в providers/ выполняют произвольный Python-код при запуске IDA. Это тот же уровень доверия, что и у любого плагина IDA, поэтому устанавливайте только те провайдеры, которым доверяете.

Использование

После правильной установки плагина вы сможете вызывать его из контекстного меню окна псевдокода IDA, как показано на скриншоте ниже:

Переключайтесь между моделями, поддерживаемыми Gepetto, через меню Edit > Gepetto:

Gepetto также предоставляет интерфейс командной строки, который можно использовать для обращения с вопросами к LLM напрямую из IDA. Убедитесь, что в строке ввода выбран Gepetto:

Горячие клавиши

Доступны следующие горячие клавиши:

  • Попросить модель объяснить функцию: Ctrl + Alt + G
  • Попросить модель добавить комментарии к коду: Ctrl + Alt + K
  • Запросить более удачные имена для переменных функции: Ctrl + Alt + R

Первоначальное тестирование показывает, что запрос более удачных имён работает лучше, если сначала попросить объяснить функцию – я предполагаю, что модель затем использует свой собственный комментарий, чтобы давать более точные предложения. В ответах ИИ присутствует элемент случайности. Если по какой-то причине полученный первоначальный ответ вам не подходит, вы всегда можете выполнить команду снова.

Ограничения

  • Для работы плагина требуется доступ к декомпилятору HexRays.
  • Все поддерживаемые LLM являются универсальными и вполне могут ошибаться! Всегда критически относитесь к полученным результатам!

Переводы

Скачать инструмент