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

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

Canonical HTML: <https://www.dotfix.net/protect-windows-code-with-virtualization.htm>

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

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

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

[Проверить защиту кода](https://www.dotfixsoft.com/files/nice_protect_trial.zip)[Сравнить лицензии](https://www.dotfix.net/dotfix_niceprotect_license.htm)

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

#### Маркеры 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](https://www.dotfix.net/images/doc/niceprotect_62/dotfix_niceprotect_map_file_delphi.png)](https://www.dotfix.net/images/doc/niceprotect_62/dotfix_niceprotect_map_file_delphi.png)Символы компилятора позволяют точно находить функции, даже когда их адреса меняются от сборки к сборке.

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

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

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

[![Преобразование исходных машинных инструкций в виртуализированный и обфусцированный код](https://www.dotfix.net/images/technology_virtualize.png)](https://www.dotfix.net/images/technology_virtualize.png)Выбранные инструкции преобразуются с сохранением поведения программы.

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

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

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

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

См. [обзор движков версии 26.1](https://www.dotfix.net/doc/niceprotect_261.htm#virtualization), [наглядную статью о виртуализации](https://www.dotfix.net/doc/niceprotect_50.htm), официальное [руководство по MAP-файлам](https://www.niceprotect.com/help/what_is_it_a_map_file.htm) и [справочник по маркерам SDK](https://www.niceprotect.com/help/virtualize_markers.htm).

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

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

[Скачать ознакомительную версию](https://www.dotfixsoft.com/files/nice_protect_trial.zip)[Все возможности NiceProtect](https://www.dotfix.net/dotfix_niceprotect.htm)
