Защита машинного кода 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.

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

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