激活API
VMProtect 是新一代软件盗版保护解决方案。VMProtect 是目前强大的反盗版解决方案之一,许多领先的软件发行商都在使用它。VMProtect允许保护可执行文件(EXE,SCR),动态链接库(DLL,OCX,BPL)和驱动程序(SYS)。
加密解密技术交流群(766135708)
激活API
激活API只包含4个功能。两个用于在线激活,另外两个用于计算机无法访问互联网时的离线激活。激活 API 旨在与 Web License Manager 合作,因此开发人员仍应调用许可系统 API 来使用从 WebLM 获得的序列号。
VMProtectActivateLicense
该函数将激活代码传递给服务器,并返回该特定计算机的序列号。否则,会表现为一个错误代码
int VMProtectActivateLicense(const char *code, char *serial, int size);
代码参数保存在购买许可证过程中从Web License Manager获得的激活代码。序列参数指定了一个给定大小的内存块,WebLM生成的序列号被放置在其中。
VMProtectDeactivateLicense
该函数将一个序列号传递给服务器进行停用。可能的返回代码列在下面。
int VMProtectDeactivateLicense(const char *serial);
序列参数包含先前在激活期间从WebLM获得的序列号(而不是激活码)。
VMProtectGetOfflineActivationString
VMProtectGetOfflineDeactivationString
这两个函数的工作原理与前两个类似,只是它们不尝试连接到WebLM服务器。相反,当它们返回一个文本块,用户应将其复制到连接到互联网的计算机上,打开WebLM离线激活表格并将文本粘贴到那里。
int VMProtectGetOfflineActivationString(const char *code, char *buf, int size); int VMProtectGetOfflineDeactivationString(const char *serial, char *buf, int size);
代码和序列参数与这些函数的在线版本类似。buf参数应指向一个1000字节以上的缓冲区,离线激活表的文本块将被复制到那里。可能的错误代码列举如下。
Code | Value | Description |
---|---|---|
ACTIVATION_OK | 0 | 激活是成功的。序列号被放到序列变量中。 |
ACTIVATION_SMALL_BUFFER | 1 | 缓冲区太小,无法容纳序列号。最小的缓冲区大小计算为:比特/8*3/2+N,其中比特是RSA密钥的长度,单位为比特,N是一个 "security constant"--用于可能的换行和其他特殊符号的额外字节。我们建议至少使用10。 |
ACTIVATION_NO_CONNECTION | 2 | 激活模块无法连接到网络许可证管理器。 |
ACTIVATION_BAD_REPLY | 3 | 激活服务器返回了错误结果。表明服务器上的一些配置问题,错误的服务器URL或黑客企图。 |
ACTIVATION_BANNED | 4 | 该激活码由软件供应商通过WebLM界面在服务器上禁止使用(例如,如果密钥泄露或盗版)。不能与ACTIVATION_ALREADY_USED混淆。 |
ACTIVATION_CORRUPTED | 5 | 有些东西已经完全出错了。这个错误是由激活模块自检系统产生的,表明有黑客试图入侵。如果你出现了错误,所有进一步的序列号和激活的操作都不安全。 |
ACTIVATION_BAD_CODE | 6 | 在激活服务器的数据库中没有找到指定的代码或者用户在输入代码时犯了一个错误,需要对代码进行检查 |
ACTIVATION_ALREADY_USED | 7 | 当出现这个错误代码时,表明激活次数已经耗尽,但这并不表明该代码是不完整的或被禁止的。该代码是完整的,它只是不能再被激活了。用户应该联系软件供应商,购买额外的许可证或在其他电脑上卸载软件,以增加服务器上的激活计数器的值。 |
ACTIVATION_SERIAL_UNKNOWN | 8 | 激活错误。在服务器的数据库中找不到给定的序列号。因此,停用是不可以的。 |
ACTIVATION_EXPIRED | 9 | 激活错误。意味着该代码的激活期已过。 |
ACTIVATION_NOT_AVAILABLE | 10 | 这个错误意味着激活/停用无法使用。 |
技巧和窍门
激活API操作较为容易,不要忘记为那些在互联网上有问题的用户提供一种离线激活程序的方法。
激活API不保存它收到的序列号,也不把它传给许可模块--这应该由开发者来做。你不需要在每次启动应用程序时都调用激活API。你只需要调用一次,从WebLM获得一个序列号,在适当的地方保存它,然后使用这个保存的副本。