Функции SDK

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

Маркеры кода

Сервисные функции

Функции лицензирования

VMProtectBegin

void VMProtectBegin(const char *MarkerName);

Маркер начала защищаемой области кода. Вызов VMProtectBegin должен находиться перед первой командой (вызовом процедуры, функции) защищаемого блока кода. MarkerName задает имя маркера, которое в VMProtect будет иметь вид "VMProtectMarker"+MarkerNamе. Например, маркер VMProtectBegin('CheckRegistration') будет выглядеть как VMProtectMarker "CheckRegistration". Если имя маркера не задано, ему будет присвоено уникальное имя вида "VMProtectMarker"+номер маркера по порядку. Тип компиляции защищаемой области задается при обработке проекта в VMProtect.

VMProtectBeginVirtualization

void VMProtectBeginVirtualization(const char *MarkerName);

Маркер начала защищаемой области кода с предустановленным типом компиляции "виртуализация". MarkerName задает имя маркера. При дальнейшей работе с VMProtect тип компиляции, заданный маркером, изменить нельзя.

VMProtectBeginMutation

void VMProtectBeginMutation(const char *MarkerName);

Маркер начала защищаемой области кода с предустановленным типом компиляции "мутация". MarkerName задает имя маркера. При дальнейшей работе с VMProtect тип компиляции, заданный маркером изменить, нельзя.

VMProtectBeginUltra

void VMProtectBeginUltra(const char *MarkerName);

Маркер начала защищаемой области кода с предустановленным типом компиляции "ультра (мутация + виртуализация)". MarkerName задает имя маркера. При дальнейшей работе с VMProtect тип компиляции, заданный маркером, изменить нельзя.

VMProtectBeginVirtualizationByKey

void VMProtectBeginVirtualizationLockByKey(const char *MarkerName);

Маркер начала защищаемой области кода с предустановленным типом компиляции "виртуализация" и опцией "Привязать к ключу". MarkerName задает имя маркера. При дальнейшей работе с VMProtect тип компиляции, заданный маркером, изменить нельзя.

VMProtectBeginUltraLockByKey

void VMProtectBeginUltraLockByKey(const char *MarkerName);

Маркер начала защищаемой области кода с предустановленным типом компиляции "ультра (мутация + виртуализация)" и опцией "Привязать к ключу". MarkerName задает имя маркера. При дальнейшей работе с VMProtect тип компиляции, заданный маркером, изменить нельзя.

VMProtectEnd

void VMProtectEnd(void);

Маркер конца защищаемой области кода. Вызов VMProtectEnd должен находиться после последней команды (вызова процедуры, функции) защищаемого блока кода.

VMProtectIsProtected

bool VMProtectIsProtected(void);

Функция MProtectIsProtected возвращает True если файл обработан VMProtect.

VMProtectIsDebuggerPresent

bool VMProtectIsDebuggerPresent(bool CheckKernelMode);

Функция VMProtectIsDebuggerPresent позволяет определить факт запуска приложения из-под отладчика. Результат ее работы (True/False) может быть обработан с помощью защитных механизмов, встроенных в приложение. При CheckKernelMode=False функция проверяет наличие отладчика User-mode (OllyDBG, WinDBG и т.п.). При CheckKernelMode=True будет производиться определение как отладчиков User-mode, так и отладчиков Kernel-mode (SoftICE, Syser и т.п.). При защите драйверов значение CheckKernelMode не имеет значения, так как драйвера работают в режиме ядра, поэтому для них всегда проверяется наличие отладчиков Kernel-mode.

VMProtectIsVirtualMachinePresent

bool VMProtectIsVirtualMachinePresent(void);

Функция VMProtectIsVirtualMachinePresent позволяет определить факт запуска приложения в виртуальной среде: VMware, Virtual PC, VirtualBox, Sandboxie. Результат ее работы (True/False) может быть обработан с помощью защитных механизмов, встроенных в приложение.

VMProtectIsValidImageCRC

bool VMProtectIsValidImageCRC(void);

Функция VMProtectIsValidImageCRC позволяет определить факт изменения защищенного модуля в памяти процесса (проверяются только неизменяемые сегменты кода и данных). Результат ее работы (True/False) может быть обработан с помощью защитных механизмов, встроенных в приложение.

VMProtectDecryptStringA

const char * VMProtectDecryptStringA(const char *Value);

Функция VMProtectDecryptStringA позволяет дешифровать строковую ANSI константу Value. Для шифрации константы её необходимо включить в список защищаемых объектов.

VMProtectDecryptStringW

const wchar_t * VMProtectDecryptStringW(const wchar_t *Value);

Функция VMProtectDecryptStringW позволяет дешифровать строковую Unicode константу Value. Для шифрации константы её необходимо включить в список защищаемых объектов.

VMProtectFreeString

bool VMProtectFreeString(const void *Value);

Функция VMProtectFreeString освобождает динамическую память, занятую расшифрованной строкой. Освобождение делать не обязательно, но если делать - то только этой функцией. Повторное использование VMProtectDecryptStringA/VMProtectDecryptStringW с тем же параметром и без уничтожения ранее расшифрованной строки не будет приводить к дополнительному выделению памяти.







© 2006-2015 Copyright VMProtect Software