Профессиональные решения

для защиты Windows приложений

и восстановления исходного кода

Защита машинного кода x86 и x64

Виртуализация и мутация критичного кода Windows-программ

DotFix NiceProtect защищает выбранные машинные инструкции, позволяя сосредоточить наиболее сильную защиту на важных участках программы. Выберите функции по данным MAP-файла компилятора либо точно обозначьте защищаемую область исходного кода маркерами SDK.

Два способа выбрать важный код

Маркеры SDK для точных областей x86

Поместите начальный и конечный маркеры вокруг важного блока в исходном коде. Примеры доступны для Delphi, Free Pascal, C/C++ или Visual Basic. DotFix NiceProtect автоматически найдет их после компиляции и защитит заключенный между ними код.

MAP-файлы для функций x86 и x64

Включите создание MAP-файла в настройках компилятора и пересоберите программу. Компилятор обычно сохранит его рядом с соответствующим EXE, DLL или OCX. DotFix NiceProtect прочитает имена и адреса функций и позволит выбрать их без изменения исходного кода.

Почему защита выбранного кода так эффективна

При выборе по MAP-файлу DotFix NiceProtect начинает преобразование со входа в функцию. Исходный защищенный блок заменяется мусорными инструкциями, а выполнение передается в секцию защиты с виртуализированным и мутированным кодом. Если преобразована часть функции, затем управление возвращается к оставшемуся машинному коду.

Исчезает узнаваемая точка входа, на которую опираются автоматический поиск функций, декомпиляция и построение графов зависимостей. Проследовать по прежней последовательности инструкций уже нельзя: для понимания защищенной логики потребуется ручной анализ и девиртуализация.

Журнал защиты сообщает фактическое число преобразованных байтов. Для точного критичного участка внутри функции кода можно использовать маркеры SDK.

Выбор машинных функций по MAP-файлу компилятора в DotFix NiceProtect
Символы компилятора позволяют точно находить функции, даже когда их адреса меняются от сборки к сборке.

Виртуализация и мутация преобразуют код по-разному

Виртуализация переводит поддерживаемые инструкции в систему команд собственной виртуальной машины, которую исполняет защищенная программа. Мутация заменяет машинные команды более сложными равнозначными последовательностями и смешивает их с создаваемым кодом. Совместное применение обоих способов затрудняет поиск границ между преобразованным кодом и переходами виртуальной машины.

Встроенный дизассемблер x86/x64 позволяет изучить исходную функцию и варианты создаваемого защищенного кода до выпуска окончательной сборки.

Преобразование исходных машинных инструкций в виртуализированный и обфусцированный код
Выбранные инструкции преобразуются с сохранением поведения программы.

Поддерживаемые архитектуры

Выбор функций по MAP-файлу работает с Windows-программами x86 и x64, а маркеры SDK предназначены для кода x86. Начиная с версии 26.1 защищенные приложения обеих архитектур также запускаются в Windows on Arm через встроенную эмуляцию Microsoft Prism.

Испытайте рабочую сборку: журнал показывает объем преобразованного кода. После защиты проверьте программу в обычных для нее режимах работы перед выпуском.

Руководства и примеры

См. обзор движков версии 26.1, наглядную статью о виртуализации, официальное руководство по MAP-файлам и справочник по маркерам SDK.

Защитите код, который представляет наибольшую ценность

Проверьте выбор функций по MAP-файлу или маркеры SDK x86 на своей скомпилированной программе.