# Шаг 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 соответствует флагу SERIAL_STATE_FLAG_INVALID, описанному в API. Т.е. система лицензирования посчитала наш ключ некорректным, что вполне логично, т.к. мы до сих пор не "объяснили" системе лицензирования, какие ключи считать правильными, а какие - нет.

Задаем "правильный" серийный номер

В тестовом режиме система лицензирования анализирует файл VMProtectLicense.ini, и реагирует на вызовы функций согласно указанным там настройкам. Подробно файл разбирается в следующих шагах, а здесь мы просто создадим такой файл и поместим туда следующий текст:

    [TestLicense]
    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("please register!\n");
                    return 0;
            }
            printf("We are registered.\n");
            return 0;
    }

Следующий шаг

© 2006-2015 Copyright VMProtect Software