Система лицензирования использует асимметричные алгоритмы для шифрования серийных номеров. Номер шифруется приватным ключом, который хранится только у разработчика продукта. Защищаемый продукт расшифровывает номер публичным ключом и проверяет его. В силу длины используемых ключей (от 1024 бит для RSA) практически невозможно подобрать закрытый ключ и создать генератор ключей для продукта.
VMProtect позволяет исполнять часть кода программы на виртуальной машине. Набор команд виртуальной машины меняется при каждой сборке защищаемой программы. Система лицензирования позволяет зашифровать часть команд виртуальной машины ключом, который хранится в серийном номере. Таким образом, даже если хакер исправит условный переход в программе, код все равно не будет работать без корректного серийного номера. А так как расшифровка кода также происходит под управлением виртуальной машины, то даже наличие серийного номера не дает возможности легко проанализировать алгоритм расшифровки.
Система лицензирования позволяет записать в ключ такую дату, что версии приложения, собранные после этой даты, не будут работать с этим ключом. Это позволяет ограничивать период бесплатных обновлений продукта. Например при продаже в ключ записывается текущая дата плюс один год и пользователь может скачивать с сайта новые версии в течение года. Ключ будет работать в этих версиях. По истечение года у пользователя будет выбор: пользоваться последней "рабочей" версией программы или купить обновление еще на один год.
Система лицензирования позволяет записать в ключ дату, после которой ключ перестает работать. Это удобно для продажи продуктов, требующих периодического обновления. Например при продаже в серийный номер помещается текущая дата плюс год и программа будет работать у пользователя в течение года. В отличие от ограничения периода бесплатных обновлений, в этом случае у пользователя нет выбора - ему придется купить новую лицензию, если он хочет продолжать пользоваться программой.
Система лицензирования позволяет ограничить время работы экземпляра программы. Это бывает полезно для демонстрационных задач. Например покупатель хочет получить для тестирования полноценную копию программы. В этом случае можно передать ему серийный номер, который ограничит время работы программы, скажем, десятью минутами. По истечение этого времени программа прекратит свою работу. Такая схема подходит для демонстрационных версий различных серверных приложений, где простой перезапуск приложения будет неудобен.
Система лицензирования позволяет получить идентификатор оборудования пользователя на основе процессора, сетевых плат и информации операционной системы. Серийный номер может быть создан так, что он будет работать только на оборудовании с этим идентификатором. Это позволяет ограничить использование одной лицензии на нескольких компьютерах.
В случае дискредитации серийного номера, система лицензирования позволяет занести такой номер в черный список, после чего номер не будет работать в следующих версиях приложения.
Система лицензирования позволяет хранить в серийном номере и выдавать защищаемой программе следующие данные: имя пользователя, e-mail, а также до 255 байт произвольных данных (т.н. "данные пользователя"). Это может быть использовано для показа в диалоге "О Программе", для реализации дополнительных проверок серийного номера, для хранения констант, доступных только в зарегистрированной версии продукта и т.п.
Используя систему активации производитель ПО может автоматически создавать ограниченные по времени и привязанные к оборудованию пользователя серийные номера. Это позволяет организовать надежно защищенный демо-период для приложения, так как VMProtect не прячет триальные метки на компьютере пользователя, а вместо этого генерирует полноценный, но ограниченный по времени серийный номер. Активация обычно производится непосредственно через интернет, но в API активации предусмотрен и оффлайновый режим.
Несмотря на то, что система лицензирования позволяет привязаться к идентификатору оборудования, следует понимать, что большинство данных об оборудовании получается средствами операционной системы, которые могут быть перехвачены хакером с целью изменения данных. Система лицензирования применяет ряд схем, позволяющих минимизировать такие риски, однако если вам требуется 100%-но надежная привязка к оборудованию, мы рекомендуем воспользоваться решением на базе USB-ключей, с которыми также может работать VMProtect.