Page 1 of 1

Delphi 2010 и Licensing System

Posted: Mon Sep 13, 2010 12:53 pm
by alexeo
Немогу заставить понимать VMProtect свои лицензии в Delphi 2010.
Когда компилирую пример "Examples\Licensing\Delphi\" в Delphi 7 всё работает, ключ принимает.
Когда компилирую в Delphi 2010, то всегда выдает ошибку 2.
Может есть какие-то особенности в работе с Delphi 2010?
Как починить?

Re: Delphi 2010 и Licensing System

Posted: Mon Sep 13, 2010 1:03 pm
by Admin
Да - особенности есть. Из-за того, что в Delphi 2010 "String" стал аналогом "UnicodeString" надо внимательно следить за типами передаваемых параметров в функции лицензирования.
В дельфовом примере достаточно изменить строку:

Code: Select all

nState := VMProtectSetSerialNumber(PAnsiChar(edSerialNumber.Text));
на

Code: Select all

nState := VMProtectSetSerialNumber(PAnsiChar(AnsiString(edSerialNumber.Text)));

Re: Delphi 2010 и Licensing System

Posted: Mon Sep 13, 2010 5:42 pm
by alexeo
Разобрался. Я переименовал VMProtectSDK32.dll, хотел скрыть присутствие VMP - вот и не работало.
DLL Box сильно затормозит работу?

Re: Delphi 2010 и Licensing System

Posted: Mon Sep 13, 2010 5:52 pm
by Admin
Разобрался. Я переименовал VMProtectSDK32.dll, хотел скрыть присутствие VMP - вот и не работало.
VMProtectSDK32 необходимо программе ТОЛЬКО для режима отладки самой программы. После защиты эта DLL программе больше не нужна. Как работает проверка серийных номеров в режиме отладки - читайте хелп (Система лицензирования - Тестовый режим работы).
DLL Box сильно затормозит работу?
Вы планируете использовать DLL Box для бандлинга VMProtectSDK32?

Re: Delphi 2010 и Licensing System

Posted: Mon Sep 13, 2010 6:16 pm
by alexeo
В VMProtectSDK.pas меняем

const
// VMProtectDLLName = 'VMProtectSDK32.dll';
VMProtectDLLName = 'abc123.dll';

Переименовываем VMProtectSDK32.dll в abc123.dll, затем защищаем VMProtect'ом => не работает система лицензирования.

Пойду читать хелп, кажется теперь понял идею с длл...

Re: Delphi 2010 и Licensing System

Posted: Tue Sep 14, 2010 2:30 am
by Admin
Нельзя менять имя VMProtectSDK32/VMProtectSDK64!
VMProtect находит ссылки на API из VMProtectSDK (по имени DLL и имени API) и меняет их на свой код. Если переименовать SDK-ную DLL-ку, то VMProtect не будет менять вызовы API на свои и защищенная программа по прежнему будет работать в тестовом режиме.