Delphi 2010 и Licensing System

Issues related to VMProtect
Post Reply
alexeo
Posts: 3
Joined: Mon Sep 13, 2010 12:45 pm

Delphi 2010 и Licensing System

Post by alexeo »

Немогу заставить понимать VMProtect свои лицензии в Delphi 2010.
Когда компилирую пример "Examples\Licensing\Delphi\" в Delphi 7 всё работает, ключ принимает.
Когда компилирую в Delphi 2010, то всегда выдает ошибку 2.
Может есть какие-то особенности в работе с Delphi 2010?
Как починить?
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi 2010 и Licensing System

Post by Admin »

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

Code: Select all

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

Code: Select all

nState := VMProtectSetSerialNumber(PAnsiChar(AnsiString(edSerialNumber.Text)));
alexeo
Posts: 3
Joined: Mon Sep 13, 2010 12:45 pm

Re: Delphi 2010 и Licensing System

Post by alexeo »

Разобрался. Я переименовал VMProtectSDK32.dll, хотел скрыть присутствие VMP - вот и не работало.
DLL Box сильно затормозит работу?
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi 2010 и Licensing System

Post by Admin »

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

Re: Delphi 2010 и Licensing System

Post by alexeo »

В VMProtectSDK.pas меняем

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

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

Пойду читать хелп, кажется теперь понял идею с длл...
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi 2010 и Licensing System

Post by Admin »

Нельзя менять имя VMProtectSDK32/VMProtectSDK64!
VMProtect находит ссылки на API из VMProtectSDK (по имени DLL и имени API) и меняет их на свой код. Если переименовать SDK-ную DLL-ку, то VMProtect не будет менять вызовы API на свои и защищенная программа по прежнему будет работать в тестовом режиме.
Post Reply