WinLicense具有和Themida同级别的保护功能以及授权管理功能。软件功能强大,使用灵活,开发者可以安全地发布软件的试用版和完全版。
Q1:“Keep Trial Running”选项(在Advanced Option面板中)的用途是什么?
A:默认情况下,WinLicense控制所有试用/许可事件(到期,许可证无效等)。你可以转到Customized Dialog面板,对于特定消息,你可以选中“Display by SDK or not displayed”选项。 当你检查该选项时,如果发生特定事件,WinLicense将不会显示任何消息并继续执行你的应用程序。因此,你必须通过调用WinLicense SDK函数(WLRegGetStatus,WLTrialGetStatus)确保从应用程序处理该消息。
如果你不想控制每个特定的许可证事件(许可证已损坏,锁定到其他计算机,许可证已过期等),你只需在Customized Dialog面板中保留“Display By WinLicense”选项以获取这些特定的许可证消息。因此,WinLicense将显示许可证消息错误并退出执行。 选项“Keep Trial Running”仅用作hack,让WinLicense显示错误消息并继续执行你的应用程序(之后运行试用模式)。
如果你正在选中“Keep Trial Running”选项,则应检查应用程序的状态(调用WLRegGetStatus)来控制应用程序何时使用无效许可证运行。如果你不检查应用程序的状态,即使使用错误的许可证,你的应用程序也将继续运行。
请注意,我们不建议使用“Keep Trial Running”选项。如果你计划完全控制应用程序中的试用/注册状态,你应该在自定义对话框面板中控制大多数试用/注册消息(选择 “Display by SDK or not displayed”这些消息)并使用WinLicense SDK功能(WLRegGetStatus / WLTrialGetStatus)来了解应用程序的当前状态。
Q2:当应用程序在非保护状态下运行时,如何模拟CustomData值? 我想使用WinlicenseSDK.ini来指定属性。
A:请使用Notepad.exe(或任何文本编辑器)打开“WinlicenseSDK.ini”文件,你可以找到以下行:
WLRegGetLicenseInfo = Peter Brian/Company Name/pbrian@companyname.com
WLRegGetLicenseInfo中的“/”分隔符对应于Name / Company / CustomData。
在上面的示例中,自定义数据为“pbrian@companyname.com”。请注意,你可以通过在WinLicenseSDK.ini文件中更改“Separator”char。只需打开WinlicenseSDK.ini并编辑“Separator”即可。例:
[WinLicenseSDK]
; Separator for fields in "WLRegGetLicenseInfo"
Separator = /
...
Q3:宏 REGISTERED_START 和 REGISTEREDVM_START有什么区别?
A:宏 REGISTERED_START 将使用从当前许可证获得的解密密钥解密START-END标记内的代码。如果你的应用程序未注册,宏将从Start跳到End,并且宏内的代码将不会被执行。
宏 REGISTEREDVM_START 允许你标记在注册应用程序时将执行的代码区域。如果你的应用程序未注册,则执行宏时应用程序将挂起或崩溃。在执行此宏中的代码之前,你应确保已注册应用程序(使用WLRegGetStatus)。此宏是针对注册状态的隐藏攻击的双重检查。
宏内部的代码在虚拟机内部执行,因此你应该避免宏内部的紧密循环或关键代码(每秒执行多次)。