Теперь с помощью VMProtect Web License Manager можно организовать практически любую схему генерации лицензий, а именно:
— Автоматическая генерация лицензий по запросу регистратора (или любого другого доверенного IP)
— Ведение списка заблокированных лицензий
— Онлайн/оффлайн активация с помощью кодов активации (функции SDK: VMProtectActivateLicense и VMProtectDeactivateLicense)
— Онлайн/оффлайн деактивация серийных номеров (функции SDK: VMProtectGetOfflineActivationString и VMProtectGetOfflineDeactivationString)
При помощи онлайн активации довольно просто реализуются следующие задачи:
— Использование кодов активации в качестве "коротких ключей" — в этом случае программа сама запрашивает серийный номер от сервера активации и он (серийный номер) уже может быть какой угодно длины
— Генерация триальных серийных номеров с привязкой к HWID — в этом случае на клиенте не остается никаких триальных меток, с помощью которых можно обмануть программу и пользоваться триальным периодом бесконечно долго. Реализация — для продукта в WebLM заводится мод с HWID(from url) и ExpireDate(delay in days)=ТРИАЛЬНЫЙ_ПЕРИОД
— Миграция со старого протектора — в этом случае старые серийные номера можно импортировать в WebLM в качестве кодов активации
VMProtect Web License Manager:
http://weblm.vmpsoft.com
admin
admin
VMProtect Ultimate v 2.11 b4:
http://vmpsoft.com/files/VMProtectSetup211b.exe
Замечания и предложения приветствуются.
Здравствуйте, AntiDot, Вы писали:
AD>Т.е. я хотел сказать, что по упомянутой выше причине, значения HWID могут быть разными, но VMP будет считать их идентичными.
AD>Веб сервис работает так же или просто сравнивает значения HWID?
WebLM сравнивает HWID точно также как и сам VMProtect:
public function MatchHwid($hwid)
{
$sn_data = $this->UnpackSerialNumber();
if (empty($hwid))
return empty($sn_data["hardwareid"]);
$bin1 = unpack("V*", base64_decode($sn_data["hardwareid"]));
$bin2 = unpack("V*", base64_decode($hwid));
$equals = array(0, 0, 0, 0);
foreach ($bin1 as $b1){
foreach ($bin2 as $b2){
if ($b1 == $b2)
$equals[$b1 & 3]++;
}
}
if ($equals[0] == 0)
return false;
$equal_types = 0;
for ($i = 0; $i < 4; $i++)
if ($equals[$i] != 0)
$equal_types++;
return $equal_types >= 2;
}