当前位置: 首页 > news >正文

加密解密软件VMProtect教程(四):准备项目之SDK功能

VMProtect 是保护应用程序代码免遭分析和破解的可靠工具,但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。

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

代码标记

  • VMProtectBegin
  • VMProtectBeginVirtualization
  • VMProtectBeginMutation
  • VMProtectBeginUltra
  • VMProtectBeginVirtualizationLockByKey
  • VMProtectBeginUltraLockByKey
  • VMProtectEnd

服务功能

  • VMProtectIsProtected
  • VMProtectIsDebuggerPresent
  • VMProtectIsVirtualMachinePresent
  • VMProtectIsValidImageCRC
  • VMProtectDecryptStringA
  • VMProtectDecryptStringW
  • VMProtectFreeString

许可功能

  • VMProtectSetSerialNumber
  • VMProtectGetSerialNumberState
  • VMProtectGetSerialNumberData
  • VMProtectGetCurrentHWID

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函数允许检测应用程序在调试器下的启动。结果(真/假)可以被应用内保护机制处理。如果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字符串常量--Value。要解密常数,你必须把它列入受保护对象的列表中。

VMProtectDecryptStringW

const wchar_t * VMProtectDecryptStringW(const wchar_t *Value);

VMProtectDecryptStringW函数对Unicode字符串常数--Value进行解密。要解密该常量,你必须将其纳入受保护对象的列表中。

VMProtectFreeString

bool VMProtectFreeString(const void *Value);

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

以上便是本篇文章的分享,有感兴趣的小伙伴,可以私我了解~

http://www.lryc.cn/news/68639.html

相关文章:

  • 夏令营教育小程序开发功能和优势有哪些?
  • Cocos CreatorXR 1.2.0 今日发布,正式支持 WebXR ,并开启 MR 之路
  • Linux 使用笔记(本人出品,必属精品)
  • 【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2 第二章——安装Atlas 200I DK A2跑通第一个案例
  • concurrenthashmap
  • 8年测试总结,项目/团队如何做自动化测试?效率价值?吐血整理...
  • 图像动态裁剪
  • Thematica: 炫彩主题与黑暗奇观的Vue3之旅
  • 平凡的Python为什么能一跃成为世界排名第一的语言
  • Wijmo 2023 v1 Crack
  • 万物互联时代的边缘计算安全需求与挑战
  • 函数序列与函数项级数
  • UML时序图详解
  • Centos7.6部署postgresql15主从
  • 【ThinkPHP6系列学习-2】多应用模式配置
  • Linux内核oops panic简析
  • Spark大数据处理讲课笔记4.8 Spark SQL典型案例
  • WhatsApp Business 多人使用终极指南
  • 布局和视图的常用属性
  • 解说天下之操作系统
  • Pruning 系列 (八)layer常用简枝(torch)方法
  • Gigabyte Z490 Vision D i9-10900k电脑 Hackintosh 黑苹果efi引导文件
  • UWB智慧工厂人员定位系统源码,人员在岗监控、车辆实时轨迹监控源码
  • 从认识元注解到使用元注解
  • 【C++从0到王者】第六站:类和对象(下)
  • AJax和Axios的讲解
  • 企业落地数字化转型,如何部署战略规划
  • 新的网络钓鱼即服务平台让网络犯罪分子生成令人信服的网络钓鱼页面
  • MySQL的隐式转换
  • LeetCode:23. 合并 K 个升序链表