# Секция "Функции для защиты"

Секция предназначена для выбора защищаемых функций.

### Добавление функции

Для того чтобы добавить новый объект в проект, нажмите кнопку "Добавить функцию" на панели инструментов, либо выберите этот пункт в контекстном меню:

Появится диалог добавления функции:

Задайте адрес функции или выберите нужную функцию из списка на вкладке "Функции", начав набирать ее имя в строке быстрого поиска. Вы можете добавить сразу несколько функций, используя множественное выделение. Все выделенные функции будут добавлены с выбраными опциями защиты.

Опции

- Тип компиляции - выбрать тип компиляции объекта. Правильный выбор способа защиты от изучения и взлома для каждого защищаемого объекта (процедуры, функции, фрагмента кода) обеспечит оптимальное соотношение между защищенностью кода и его быстродействием. VMProtect позволяет пользователю установить следующие типы компиляции для каждого защищаемого объекта:

- Мутация. Исполняемый код видоизменяется на уровне команд процессора - существующие команды видоизменяются, добавляются различные мусорные команды и т.д. Данный тип компиляции относительно слабо защищает обрабатываемый код от взлома и анализа и главным образом препятствует определению обрабатываемых функций с помощью сигнатурных анализаторов (PEiD+KANAL, IDA+FLIRT и т.д.). Этот тип компиляции целесообразно применять при защите библиотечных функций, так как они, как правило, не нуждаются в защите от взлома и анализа и достаточно будет только изменить их сигнатуры, чтобы взломщик не смог автоматически определить, какие именно библиотеки используются в приложении. При использовании мутации степень защиты от взлома и анализа низкая, скорость исполнения кода высокая.
- Виртуализация. Исполняемый код переводится в байт-код, исполняемый на виртуальной машине. Данный тип компиляции следует применять для всех критичных участков кода, где помимо противодействия взлому и анализу важна скорость работы. При использовании виртуализации степень защиты от взлома и анализа средняя, скорость исполнения кода средняя.
- Ультра (мутация + виртуализация). Исполняемый код видоизменяется на уровне команд процессора и уже после этого переводится в байт-код, исполняемый на виртуальной машине. Данный тип компиляции следует применять для всех участков кода, где не важна скорость работы. Степень защиты от взлома и анализа высокая, скорость исполнения кода низкая.

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

Поиск

Необходимые объекты можно отыскать по их имени в универсальном быстром поиске:

В строке поиска можно использовать стандартные символы подстановки:

- * - заменяет группу символов произвольной длины;
- ? - заменяет любой одиночный символ.

### Добавление папки

Добавление папки осуществляется с помощью контекстного меню:

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

Задайте имя новой папке:

### Редактирование объектов

В правой части окна отображается содержимое выбранного объекта. Если в дереве проекта выбран защищаемый объект, то с правой стороны отображается дизассемблированное представление этого объекта:

Щелчок правой кнопкой мыши по строчке кода вызывает контекстное меню:

- Внешний адрес - включить выбранный адрес в список внешних адресов;
- Конец функции - ограничить список команд, которые будут обработаны в процессе компиляции;

Если в дереве проекта выбрана папка, то с правой стороны отображается список функций, входящих в эту папку:

Перемещать функции из папки в папку можно простым перетаскиванием при помощи мыши.

© 2006-2015 Copyright VMProtect Software