主页 » 支持 » 用户手册 » 使用 VMProtect » 准备工程 » SDK 函数

SDK 函数

SDK 函数可以集成到受保护应用程序的源代码中,以设置受保护区域的边界,检测调试器或虚拟化工具。

代码标记

服务函数

授权函数

VMProtectBegin

void VMProtectBegin(const char *MarkerName);

标记 代码保护区开始的标记。对 VMProtectBegin 的调用必须放在受保护代码块的第一个命令(或过程或函数调用)之前。MarkerName 定义了在 VMProtect 中看起来像 “VMProtectMarker” +MarkerName 的标记名称。例如,标记 VMProtectBegin('CheckRegistration') 将显示为 VMProtectMarker “CheckRegistration” 。如果未设置标记的名称,则以 “VMProtectMarker” +marker_serial_number 的形式为其赋予唯一的名称。您可以在 VMProtect 中设置给定保护块的 编译类型 给定的受保护块 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);

如果文件由 VMProtect 处理,则 MProtectIsProtected 函数返回 True。

VMProtectIsDebuggerPresent

bool VMProtectIsDebuggerPresent(bool CheckKernelMode);

VMProtectIsDebuggerPresent 函数允许在调试器下检测应用程序的启动。结果(真/假)可以通过应用内保护机制进行处理。如果 CheckKernelMode=False,该函数会检查用户模式调试器(OllyDBG、WinDBG 等)。如果 CheckKernelMode=True,用户模式和内核模式调试器(SoftICE、Syser 等)。在保护驱动程序时,CheckKernelMode 的值没有意义,因为驱动程序总是工作在内核模式,所以总是检查内核模式调试器的存在。

VMProtectIsVirtualMachinePresent

bool VMProtectIsVirtualMachinePresent(void);

VMProtectIsVirtualMachinePresent 函数允许检测应用程序在虚拟机工具下的启动:VMware、Virtual PC、VirtualBox、Sandboxie。结果(真/假)可以通过应用内保护机制进行处理。

VMProtectIsValidImageCRC

bool VMProtectIsValidImageCRC(void);

VMProtectIsValidImageCRC 函数检测可执行模块在进程内存中已更改的事实(仅检查不可更改的代码和数据分段)。结果(真/假)可以通过应用内保护机制进行处理。

VMProtectDecryptStringA

const char * VMProtectDecryptStringA(const char *Value);

VMProtectDecryptStringA 函数解密 ANSI 字符串常量 – 值。要解密该常量,您必须 将其包括在受保护的对象列表中

VMProtectDecryptStringW

const wchar_t * VMProtectDecryptStringW(const wchar_t *Value);

VMProtectDecryptStringW 函数解密 Unicode 字符串常量 – 值。要解密该常量,您必须 将其包括在受保护的对象列表中

VMProtectFreeString

bool VMProtectFreeString(const void *Value);

VMProtectFreeString 函数释放为解密字符串分配的动态内存。没有必要释放内存,但如果您这样做 - 您必须使用这个功能。如果 VMProtectDecryptStringA/VMProtectDecryptStringW 第二次使用相同的参数而不破坏先前解密的字符串,则不会分配额外的内存。