У меня есть юзкейс, когда лицензию использующую running time limit и полученную через встроенную систему лицензирования нужно продлевать каждые несколько часов (каждый раз стучать к серверу активации).
Однако как выяснилось, time limit ведёт отсчёт с момент запуска программы, и задание нового serial number не ведёт к сбросу точки отсчёта.
Является ли это чем-то, что может быть исправлено/улучшено в vmprotect, или это лучше реализовать на стороне своего кода?
Если второе - то есть ли в vmprotect возможность сделать так, чтобы текущее состояние VMProtectGetSerialNumberState перешло в невалидное?
Я так понимаю сейчас VMProtectSetSerialNumber невалидные номера отвергает без изменения внутреннего состояния, и в качестве решения я думаю делать для деактивации вызов VMProtectSetSerialNumber с серийным номером в блеклисте.
Сброс времени работы программы
Re: Сброс времени работы программы
Очень странный кейс если честно.У меня есть юзкейс, когда лицензию использующую running time limit и полученную через встроенную систему лицензирования нужно продлевать каждые несколько часов (каждый раз стучать к серверу активации).
"Running Time Limit" изначально был предназначен именно для ограничения работы программы (например для реализации триала и т.п.) и он никак не привязан к моменту вызова VMProtectSetSerialNumber.Однако как выяснилось, time limit ведёт отсчёт с момент запуска программы, и задание нового serial number не ведёт к сбросу точки отсчёта.
VMProtectSetSerialNumber(NULL)Если второе - то есть ли в vmprotect возможность сделать так, чтобы текущее состояние VMProtectGetSerialNumberState перешло в невалидное?
Re: Сброс времени работы программы
> Очень странный кейс если честно.
Своеобразная форма Always-on DRM, однако согласен что в vmprotect система лицензирования не совсем для этого предназначена.
Было бы неплохо если бы была какая-то возможность на лету расшифровывать байткод виртуальных машин самого vmp, однако в моём случае это требовалось для очень мелкого куска кода, а потому под этот кусок кода была создана мелкая виртуальная машина на ~15 опкодов, реализовал в ней всё что нужно, и сам интерпретатор накрыл vmp, поверх чего уже сделал микс своей и встроенной системы лицензирования.
Своеобразная форма Always-on DRM, однако согласен что в vmprotect система лицензирования не совсем для этого предназначена.
Было бы неплохо если бы была какая-то возможность на лету расшифровывать байткод виртуальных машин самого vmp, однако в моём случае это требовалось для очень мелкого куска кода, а потому под этот кусок кода была создана мелкая виртуальная машина на ~15 опкодов, реализовал в ней всё что нужно, и сам интерпретатор накрыл vmp, поверх чего уже сделал микс своей и встроенной системы лицензирования.