
Пошаговое руководство по использованию локальной модели ИИ Google Gemma 4 E4B для реверс-инжиниринга Windows crackme с помощью Ghidra, включая настройку локального вывода и автоматическое переименование функций и переменных.
Я экспериментировал с новой моделью с открытыми весами Gemma E4B, которую выпустила Google, и к моему удивлению, она показала отличные результаты в сценариях локального офлайн-реверс-инжиниринга. Я решил написать этот туториал, чтобы распространить информацию о том, что локальный ИИ теперь достаточно хорош для многих базовых задач реверсинга, и в будущем ситуация, вероятно, будет быстро улучшаться.
Одна из самых утомительных частей реверсинга нового бинарника — это самый первый этап, когда у вас нет никакого представления о том, какие функции и переменные важны. Существует множество трюков, которыми пользуются реверсеры для начала, включая просмотр ссылок на строки, бинарное диффингование или поиск похожих функций.
ИИ здесь очень помогает, и лично я добился больших успехов, используя API OpenAI для разметки бинарника или очистки вывода декомпилятора. Однако у использования этих API есть несколько недостатков:
Стоимость — Декомпиляция и дизассемблирование генерируют огромное количество токенов. API взимают плату за токен, поэтому анализ больших бинарников может обойтись в довольно крупную сумму. Если вы работаете с большой целью, содержащей множество бинарников, которые обновляются каждую неделю, эти расходы могут быстро накапливаться и становятся непомерными для реверсеров-любителей.
Конфиденциальность — При использовании удаленного API хост ИИ имеет доступ к информации о том, что вы делаете. Это неприемлемо в некоторых профессиональных сценариях.
Контроль — Когда вы полагаетесь на удаленный API, у вас нет контроля над тем, какие модели вам предоставляются, или над качеством этих моделей. Если вы полагаетесь на них для критически важных задач, это может стать проблемой, когда они замедляются или перестают работать в тот момент, когда они вам нужны, или когда качество их вывода ухудшается до такой степени, что они становятся бесполезными.
Запуск собственных локальных моделей ИИ решает некоторые из этих проблем:
Стоимость — Запуск локальной модели может быть гораздо дешевле, чем использование хостингового сервиса. Хотя ваша локальная модель, вероятно, меньше и медленнее, чем у хорошего провайдера, если она достаточно хороша и работает за приемлемое время, может иметь смысл сэкономить деньги, запуская свою модель, особенно если вы обрабатываете большие объемы данных для простых задач.
Конфиденциальность — Когда вы запускаете модель локально, сетевые вызовы не происходят, и вы полностью контролируете свою конфиденциальность. Никто не может видеть, для чего вы используете модель на своем собственном компьютере.
Контроль — Прелесть модели с открытыми весами в том, что никто не может её у вас отнять. OpenAI или Anthropic могут однажды сделать свои самые современные модели недоступными, либо за счет повышения цен, либо путем явного удаления своих API. Но с моделью с открытыми весами вы контролируете свою судьбу, к лучшему или к худшему.
Однако у локальных моделей ИИ есть и свои недостатки:
Размер — Чем больше модель, тем она интеллектуальнее. Однако большинство больших моделей не помещаются на потребительском оборудовании. Из-за этого, если вы запускаете локальную модель, скорее всего, вы запускаете модель, которая в 10-100 раз меньше самой современной (State-of-the-Art) модели. Это уменьшение размера напрямую приводит к снижению интеллекта модели, делая их непригодными для многих задач, которые люди считают само собой разумеющимися в современных моделях, таких как ChatGPT/Codex или Claude.
Скорость — Локальные модели, вероятно, будут работать на вашем компьютере медленнее, чем при использовании API ИИ. Опять же, это связано с ограничениями потребительского оборудования и некоторых хитростей, которые могут применять провайдеры API и которые обычно недоступны для вас.
Настройка — Запуск локальных моделей похож на попытку установить Linux на восстановленный ноутбук вместо того, чтобы зайти в магазин Apple и купить новый Macbook Air. Опыт Codex и Claude Code — это опыт магазина Apple в мире ИИ. Опыт локальных моделей ИИ — это парень в федоре в своем гараже, долбящийся с глючным компьютером, пытаясь заставить его работать. Как минимум, вам нужно беспокоиться о следующих вещах:
Это непростой путь, и многие сдаются, полагая, что локальные модели ИИ не справляются с задачей, потому что они так и не нашли правильного сочетания оборудования/модели/настроек/промптинга/обвязки, чтобы заставить их работать для своей задачи. Хотя во многих случаях они правы, я надеюсь, что этот туториал хотя бы прольет свет на то, как далеко продвинулись локальные модели, как они могут помочь в реверс-инжиниринге, и вдохновит людей попробовать локальный ИИ.
(пароль к архиву — crackmes.one). Я разместил альтернативную ссылку здесь в репозитории на случай, если оригинальная ссылка перестанет работать.
Ghidra 12.04 используется для дизассемблирования и декомпиляции. Вам понадобится установить OpenJDK 21 для его использования: https://github.com/nationalsecurityagency/ghidra
Во время работы над этим туториалом я средствами vibe-coding с Claude Code создал плагин для Ghidra для переименования функций и переменных с помощью ИИ. Вы можете скачать плагин отсюда: https://github.com/markoglasgow/Ghidra_FastAIRenamer_Plugin
Чтобы установить его, просто переместите zip-файл ghidra_12.0.4_PUBLIC_20260427_FastAIRenamerPlugin.zip в ${GHIDRA_HOME}\Extensions\Ghidra, затем запустите Ghidra, выполнив ${GHIDRA_HOME}\ghidraRun.bat. Чтобы активировать плагин, в начальном окне Ghidra в верхнем меню выберите File -> Install Extensions, затем в браузере плагинов установите флажок рядом с FastAIRenamerPlugin и нажмите Ok. Ghidra предложит перезапуститься, сделайте это сразу.