湖南省建设工程造价总站网站,wordpress编辑权限设置,公司网站建设完成通知,wordpress许愿插件VMProtect 是保护应用程序代码免遭分析和破解的可靠工具#xff0c;但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。
SDK 功能可以集成到受保护应用程序的源代码中#xff0c;以设置受保护区域的边界#xff0c;以检测调…VMProtect 是保护应用程序代码免遭分析和破解的可靠工具但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。
SDK 功能可以集成到受保护应用程序的源代码中以设置受保护区域的边界以检测调试器或虚拟化工具。
代码标记
VMProtectBeginVMProtectBeginVirtualizationVMProtectBeginMutationVMProtectBeginUltraVMProtectBeginVirtualizationLockByKeyVMProtectBeginUltraLockByKeyVMProtectEnd
服务功能
VMProtectIsProtectedVMProtectIsDebuggerPresentVMProtectIsVirtualMachinePresentVMProtectIsValidImageCRCVMProtectDecryptStringAVMProtectDecryptStringWVMProtectFreeString
许可功能
VMProtectSetSerialNumberVMProtectGetSerialNumberStateVMProtectGetSerialNumberDataVMProtectGetCurrentHWID
VMProtectBegin void VMProtectBegin(const char *MarkerName); 识别代码保护区域的开始的标记必须在受保护代码块的第一个命令或过程或函数调用之前调用 VMProtectBegin。MarkerName 定义标记的名称类似于 VMProtect 中的“VMProtectMarker”MarkerName。例如标记 VMProtectBegin(CheckRegistration) 将看起来像 VMProtectMarker “CheckRegistration”。如果未设置标记的名称则以“VMProtectMarker”marker_serial_number 的形式为其指定一个唯一名称。你可以在 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 期间无法更改此标记的编译类型。
VMProtectBeginVirtualizationLockByKey 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函数允许检测应用程序在调试器下的启动。结果真/假可以被应用内保护机制处理。如果CheckKernelModeFalse该函数检查用户模式的调试器OllyDBG, WinDBG等。如果CheckKernelModeTrue用户模式和内核模式的调试器SoftICESyser等。当保护驱动时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字符串常量--Value。要解密常数你必须把它列入受保护对象的列表中。
VMProtectDecryptStringW const wchar_t * VMProtectDecryptStringW(const wchar_t *Value); VMProtectDecryptStringW函数对Unicode字符串常数--Value进行解密。要解密该常量你必须将其纳入受保护对象的列表中。
VMProtectFreeString bool VMProtectFreeString(const void *Value); VMProtectFreeString 函数释放为解密字符串分配的动态内存。释放内存不是必须的但如果你这样做 – 你必须使用此功能。如果 VMProtectDecryptStringA/VMProtectDecryptStringW 第二次使用相同的参数而不破坏先前解密的字符串则不会分配额外的内存。
以上便是本篇文章的分享有感兴趣的小伙伴可以私我了解~