
Распаковывайте и деобфусцируйте защищённые VMProtect 2 бинарные файлы с помощью эмуляционного VM-обозревателя, профилировщика обработчиков и экспериментального LLVM-рекомпилятора для девиртуализации.
Этот репозиторий представляет собой набор устаревших инструментов для работы с бинарными файлами, защищёнными VMProtect 2.
Эти инструменты обеспечивают распаковку, анализ и экспериментальную девиртуализацию программного обеспечения, защищённого VMProtect 2. В основе этой коллекции лежит vmprofiler — библиотека утилит, предоставляющая фундаментальную логику, используемую всеми остальными инструментами. Она отвечает за идентификацию ключевых компонентов VMProtect 2, таких как VM-обработчики, таблица обработчиков, трансформации и многое другое.
Уроки, извлечённые из этого проекта, которому более 4 лет, следует передать тем, кто интересуется девиртуализацией.
Этот проект пытается идентифицировать отдельные VM-обработчики. Этот подход хрупок, не масштабируется и может быть сведён на нет изменениями архитектуры виртуальной машины (связывание нескольких обработчиков, сложные обработчики и т. д.). Вместо этого я выступаю за инкрементальную стратегию подъёма (lifting) и восстановления потока управления с минимальной VM-специфичной логикой деобфускации. Такие инструменты, как Saturn, Dna от Colton, Triton и Mergen, успешно деобфусцировали VMProtect практически без идентификации VM-специфичных обработчиков или вовсе без неё. Этот репозиторий документирует архитектуру VMProtect 2 и служит предостережением: избегайте создания инструментов девиртуализации, которые сильно зависят от идентификации специфичных для виртуальной машины обработчиков.
Полу-универсальный подход к девиртуализации VMProtect требует надёжного фреймворка, поддерживающего распространение операций load/store, распространение констант по секциям, DCE и ряд других простых оптимизаций. Многие пытаются использовать LLVM для обратной компиляции в нативный код; однако я считаю, что этот подход всегда будет давать нежелательный результат. У нас есть собственный фреймворк blare2, который предоставляет чистые возможности подъёма и понижения 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, обеспечивающий интерактивное и визуальное исследование виртуализированного кода.