
VMProtect2 Deobfuscation Tooling
Этот репозиторий представляет собой набор устаревших инструментов для работы с бинарными файлами, защищёнными VMProtect 2.
Эти инструменты позволяют распаковывать, анализировать и выполнять экспериментальную девиртуализацию программ, защищённых с помощью VMProtect 2. В основе этого набора лежит vmprofiler — библиотека утилит, предоставляющая фундаментальную логику, используемую всеми остальными инструментами. Она отвечает за идентификацию ключевых компонентов VMProtect 2, таких как VM-обработчики, таблица обработчиков, трансформы и другое.
Уроки, извлечённые из этого проекта возрастом более 4 лет, должны быть переданы тем, кто интересуется девиртуализацией.
Этот проект пытается идентифицировать отдельные VM-обработчики. Такой подход хрупок, не масштабируется и может быть обойдён изменениями в архитектуре виртуальной машины (связывание нескольких обработчиков, сложные обработчики и т.д.). Вместо этого я выступаю за стратегию инкрементального подъёма (lifting) и восстановления потока управления с минимальной VM-специфичной логикой деобфускации. Такие инструменты, как Saturn, Dna by Colton, Triton и Mergen, успешно деобфусцировали VMProtect с минимальной или полным отсутствием идентификации VM-специфичных обработчиков. Этот репозиторий документирует архитектуру VMProtect 2 и служит предостережением: избегайте создания инструментов девиртуализации, сильно зависящих от идентификации специфичных для виртуальной машины обработчиков.
Полу-универсальный подход к девиртуализации VMProtect требует надёжного фреймворка, поддерживающего распространение загрузок/сохранений, распространение констант из секций, DCE и ряд других простых оптимизаций. Многие пытаются использовать LLVM для компиляции обратно в нативный код; однако я считаю, что этот подход всегда будет давать неоптимальный результат. У нас есть собственный фреймворк blare2, который предоставляет чистые возможности подъёма (lift) и понижения (lowering) в соотношении 1:1, которые мы используем для деобфускации. Если вы заинтересованы в консультационных услугах по деобфускации, мы можем это предоставить при наличии свободного графика.
vmemu
Инструмент исследования виртуальной машины на основе Unicorn Engine.
Позволяет распаковывать защищённые программы и анализировать поток управления внутри указанного vmenter.
Этот инструмент генерирует файл .vmp2, содержащий граф потока управления для данной точки входа VM.
Полученный файл .vmp2 затем можно передать в vmdevirt для перекомпиляции функции обратно в нативный x86 и повторной интеграции в исходный бинарный файл. Обратите внимание, что это не просто простой трейсер, который обнаруживает только один путь через функцию; он фактически идентифицирует виртуальные jcc и исследует весь виртуализированный поток управления.
vmdevirt
Экспериментальный LLVM-рекомпилятор для файлов .vmp2.
Хотя он функционален, он считается крайне экспериментальным и нестабильным, и в целом этот подход не рекомендуется.
vmassembler
Экспериментальный ассемблер для кодирования определяемых пользователем операций виртуальной машины.
Этот проект демонстрирует глубокое техническое понимание архитектуры виртуальной машины VMProtect 2.
vmhook
Инструмент, предназначенный для внедрения в виртуальную машину VMProtect 2 во время выполнения, обеспечивающий детальное исследование отдельных VM-обработчиков.
Пожалуйста, следуйте инструкциям на этой странице.
vmhookКонфигурация для vmassembler, vmemu, vmprofiler и vmprofiler-cli:
cmake -B build
cmake --build build
С vmdevirt (будет загружен и собран LLVM!):
cmake -B build -DBUILD_VMDEVIRT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
С vmprofiler-qt:
cmake -B build -DBUILD_VMPROFILER_QT=ON
cmake --build build
Оба необязательных модуля:
cmake -B build -DBUILD_VMDEVIRT=ON -DBUILD_VMPROFILER_QT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Эти инструменты предоставляются только для образовательных и исследовательских целей. Они не предназначены для любых незаконных действий, несанкционированного доступа или нарушений DMCA или других законов. Сами инструменты не нарушают никаких положений DMCA. Вся работа является моим оригинальным творением, и любые действия, предпринятые пользователями этих инструментов, являются исключительной ответственностью этих пользователей и не отражают действия или намерения автора.
vmprofiler
Основная библиотека утилит, питающая все остальные инструменты.
Она включает сопоставление шаблонов VM-обработчиков, извлечение таблиц обработчиков, удаление мёртвого кода (DCE) и другие важные аналитические процедуры.
vmprofiler-cli
Интерфейс командной строки для vmprofiler, позволяющий пользователям отображать и просматривать извлечённую информацию в текстовом формате.
vmprofiler-qt
Графический дизассемблер на Qt для байт-кода VMProtect 2, предоставляющий интерактивное и визуальное исследование виртуализированного кода.