Кажется, нашел ошибку в VMProtect...
Posted: Fri Nov 08, 2019 9:09 pm
Здравствуйте! Скачал демо версию, 3.4.0. Установил её с флешки на другой компьютер, на котором нет ни сетевой карты, ни сетевого оборудования (да, вот так, совсем нет, физически отсутствуют). Попробовал защитить приложение, написанное на Delphi-7 (код не привожу, поскольку эффект наблюдается на любом защищаемом приложении). Приложение успешно компилируется, появляется приглашение запустить. Запускаю - и сразу получаю ошибку: "This applicftion is protected with unregistered version of VMProtect and cannot be executed on this computer.". Интересно, как такое может быть?..
У меня есть догадки, почему так происходит. Если я не прав, поправьте меня...
1) Демо-версия имеет ограничение - защищённая программа привязывается к конфигурации ПК и может быть запущена только на том компьютере, на котором была скомпилирована протектором (это я прочитал).
2) Привязку VMProtect делает своей же функцией "VMProtectGetCurrentHWID" а последующая проверка при запуске приложения производится ею же. Эта функция вычисляет некий хеш на основе ID CPU, Mac-адреса, имени компьютера и чего-нибудь ещё.
3) НО! Поскольку в данном компьютере нет никакого сетевого оборудования, то при попытке определить Mac-адрес функция возвращает ошибку. В результате приложение не может определить на каком компьютере оно запущено, на "своём" или на "чужом" и не запускается...
Конечно, понятно, что на лицензионной версии VMProtect этой ошибки не будет. Но... если я прав, корректно ли тогда будет работать система лицензирования с привязкой по HWID в этом и подобных случаях? Когда функция не может определить ID оборудования по причине его отсутствия?..
У меня есть догадки, почему так происходит. Если я не прав, поправьте меня...
1) Демо-версия имеет ограничение - защищённая программа привязывается к конфигурации ПК и может быть запущена только на том компьютере, на котором была скомпилирована протектором (это я прочитал).
2) Привязку VMProtect делает своей же функцией "VMProtectGetCurrentHWID" а последующая проверка при запуске приложения производится ею же. Эта функция вычисляет некий хеш на основе ID CPU, Mac-адреса, имени компьютера и чего-нибудь ещё.
3) НО! Поскольку в данном компьютере нет никакого сетевого оборудования, то при попытке определить Mac-адрес функция возвращает ошибку. В результате приложение не может определить на каком компьютере оно запущено, на "своём" или на "чужом" и не запускается...
Конечно, понятно, что на лицензионной версии VMProtect этой ошибки не будет. Но... если я прав, корректно ли тогда будет работать система лицензирования с привязкой по HWID в этом и подобных случаях? Когда функция не может определить ID оборудования по причине его отсутствия?..