软件保护系统WinLicense独家保护技术SecureEngine使用指南(7)——关于检查保护宏

WinLicense使用SecureEngine?保护技术,该技术能够以最高优先级运行其代码,以实现前所未有的保护技术。SecureEngine?宏允许使用SecureEngine?与应用程序进行交互,从而使应用程序和SecureEngine?可以作为一个整体运行。

WinLicense是一个功能强大的保护系统,为希望保护其应用程序免受高级逆向工程和软件破解的软件开发人员设计。WinLicense使用SecureEngine护技术,该技术能够以最高优先级运行其代码,以实现前所未有的保护技术。

SecureEngine允许使用SecureEngine应用程序进行交互,从而使应用程序和SecureEngine以作为一个整体运行。要将SecureEngine包含到应用程序中,需要在应用程序源代码中指定这些宏。 当SecureEngine算保护应用程序时,它将在应用程序内找到这些宏并将所需的操作应用于每个特定的宏。

SecureEngine供给软件开发人员的不同宏如下: 

  • 在编程语言中使用宏
  • 虚拟机宏
  • 突变宏
  • StrEncrypt宏
  • 注册宏
  • 未注册的宏
  • 未保护的宏
  • 检查保护宏
  • 检查代码完整性宏
  • 检查注册宏
  • 检查Virtual PC宏

如果你还没有使用过WinLicense,可以点击此处下载最新版测试。


关于检查保护宏

CHECK_PROTECTION宏使您可以检查您的应用程序是否已部分解压缩,或者某些保护引擎是否已受到破解程序的攻击。此宏提供受保护的应用程序和SecureEngine保护之间的通信。

注意:SecureEgine当前版本不支持.NET语言或Visual Basic应用程序的此宏。

可以从其他宏内部调用CHECK_PROTECTION宏。实际上,强烈建议从VM宏内部调用CHECK_PROTECTION宏。

CHECK_PROTECTION宏具有特殊的语法:

CHECK_PROTECTION (user_variable, user_value)

其中“ user_variable”是应用程序中的任何局部或全局变量,而“ user_value”是任何立即数(恒定值)。它的工作方式如下:

  • 调用CHECK_PROTECTION宏。
  • SecureEngine控制处理器并进行特殊检查,以了解应用程序是否已被篡改。
  • 如果应用程序未被篡改,则SecureEngine会将“ user_variable”设置为等于“ user_value”。
  • 如果应用程序被篡改,SecureEngine不会设置“ user_variable”。您应该注意将“ user_variable”初始化为“ user_value”中的其他内容。
  • SecureEngine将控制权返回给受保护的应用程序。受保护的应用程序应检查“ user_variable”的值,如果该应用程序已被篡改,则应执行所需的操作。

如果发现应用程序已被篡改,请考虑以下做法:

  • 避免立即采取措施,例如显示消息或使应用程序崩溃。如果您立即采取行动,那么破解者将知道有问题的代码位于何处,并会集中所有精力,试图找出该代码中问题的根源。
  • 避免显示表明应用程序已被篡改的消息。相反,应使应用程序“稍后”崩溃(请参阅下文)或在以后显示奇怪的错误消息。
  • 引起“后期崩溃”或故障。也就是说,如果您检测到您的应用程序已被篡改,则可以在代码中标记特殊变量(或类似的操作)。在应用程序的后续点,您使应用程序崩溃或以错误的方式初始化其他结构,因此,您的应用程序将无法正常工作。例如,假设您正在保护CD刻录应用程序。在初始化应用程序时,您可以调用“ CHECK_PROTECTION”宏来确定应用程序是否被篡改。如果被篡改,您将不会采取任何措施,而是等待CD刻录过程将随机或不正确的数据刻录到CD中。
  • 在所有您调用CHECK_PROTECTION以及检查应用程序是否被篡改的地方使用VM宏。另外,如果您决定产生“后期”崩溃或故障,则导致崩溃或故障的代码应放入VM或CodeReplace宏中。

显示Delphi宏用法

var MyCheckVar: Integer; begin {$I VM_Start.inc} // your code goes here {$I CheckProtection_Prolog.inc}asm push 11111111                     // 11111111 is our special constant pop  MyCheckVar                   // SecureEngine will set "MyCheckVar" to 11111111 if protection is OKend;{$I CheckProtection_Epilog.inc} // your code goes here if MyCheckVar <> 11111111 then ShowMessage("We are tampered!"); {$I VM_End.inc}

显示C++宏用法

int MyCheckVar; VM_START // your code goes here CHECK_PROTECTION(MyCheckVar, 0x12345678) // your code goes here if (MyCheckVar != 0x12345678) printf("We are tampered!"); VM_END

注意事项

为确保在应用程序的正确位置插入了VM宏,应注意以下详细信息:

  • 将CHECK_PROTECTION宏放入VM或CodeReplace宏中。

  • 始终认为,来自破解者的第一次攻击只是直接跳过您的VM / CodeReplace宏(即,宏中的代码未执行),因此您应确保在宏中放入了必要的代码 您的应用程序可以正常运行。

  • 不必定期调用CHECK_PROTECTION宏,只需确保在您的应用程序中随时执行该宏即可。

  • 可以根据需要放置任意数量的CHECK_PROTECTION宏,但是我们建议您仅将其中几个(大约5个)放入应用程序的不同例程中。


是WinLicense正版代理商,提供最低的授权价格和最优质的服务,在线购买享受超值优惠>>

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月13日
下一篇 2020年1月13日

相关推荐

发表回复

登录后才能评论