主页 » 支持 » 用户手册 » 授权系统 » 集成到应用程序 » 步骤1.2:添加授权检查代码

步骤1.2:添加授权检查代码

包括 VMProtect SDK

如果您以前没有这样做过,那么是时候将 VMProtect SDK 包含到您的工程中了。SDK 包含三个文件:头文件 (VMProtectSDK.h)、库文件 (VMProtectSDK32.lib) 和带有实现的 dll 文件 (VMProtectSDK32.dll)。对于 64 位系统,库和 dll 文件有单独的实现。

将 dll文件、头文件和库文件放到我们应用程序的工作文件夹中,即源文件所在的位置,并将头文件包含在主文件中:

#include <windows.h>
#include <stdio.h>
#include "VMProtectSDK.h"

构建工程并确保其像以前一样编译和运行。授权系统尚未启用。

将序列号发送到授权系统

现在,在序列号行的正下方,我们添加了对授权系统 SDK 函数的调用:

char *serial = "Xserialnumber"; // 为简单起见,我们直接在代码中设置序列号。
int res = VMProtectSetSerialNumber(serial);
printf("res = 0x%08X\n", res);

如果执行此操作后程序停止并显示缺少所需的 dll 文件的错误,请确保将相应的 DLL 文件放入我们应用程序的工作文件夹中。如果执行成功,您应该会看到以下消息:

res = 0x00000002

这里的 2 对应在API中描述 的 SERIAL_STATE_FLAG_INVALID 标志。这意味着授权系统认为我们的密钥不正确,这是非常正确的,因为我们没有向系统 “解释” 哪些密钥是正确的,哪些不是。

指定 “正确” 序列号

在测试模式下,授权系统分析 VMProtectLicense.ini 文件并根据指定的设置对函数调用作出反应。我们将在后面的步骤中彻底审查该文件,现在我们只需创建这样一个文件并在其中添加以下文本:

[测试授权]
AcceptedSerialNumber=Xserialnumber

现在,再次运行我们的程序。如果您仍然收到 “2” 错误代码,请检查并确保 ini 文件位于应用程序的工作文件夹中。这次我们应该收到 “0” 。这是授权系统接受并批准序列号的标志。现在我们可以从代码中删除is_registered() 函数 – 授权系统现在负责检查序列号:

#include <windows.h>
#include <stdio.h>
#include "VMProtectSDK.h"

int main(int argc, char **argv)
{
        char *serial = "Xserialnumber"; // 为简单起见,我们直接在代码中设置序列号。

        int res = VMProtectSetSerialNumber(serial);
        printf("res = 0x%08X\n", res);

        if (res)
        {
                printf("请注册!\n");
                return 0;
        }
        printf("已注册。\n");
        return 0;
}

下一步