Господа, вопрос скорее в программинг но там мало кто работает с аспом, поэтому рискну написать сюда. Писал в саппорт но они молчат уже 4-й день как в лучшие времена Солодовникова
1. При старте моя программа проверяет факт регистрации и если ключ еще
не введен показывает наг (form11):
{$I include\UserPolyBuffer.inc}
kol:=0;
GetRegistrationInformation(0, UserKey, UserName );
if (UserKey <> nil) AND (StrLen(UserKey) > 0) then
begin
//это зерегистрированная версия
{$I include\aspr_crypt_begin3.inc}
kol:=1;
{$I include\aspr_crypt_end3.inc}
end;
try
kol:=round(kol/kol);
except
form11.showmodal;
end;
Подобного рода конструкции используются и в других частях программы,
при этом программу ломают буквально через час после выпуска релиза.
Пожалуйста дайте рекомендации по более грамотному наложению защиты.
2. В примере описывающем проверку CRC, есть код:
Procedure Main( SecureValue : DWORD );
begin
{$I Inc\DelphiCrcBegin.inc}
MessageBox(0,PChar(IntToHex(SecureValue,4)),'Under protection',0);
{$I Inc\DelphiCrcEnd.inc}
end;
//-------------------------------------------------------------------------------
begin
MessageBox(0,'Begin','',0);
{$I Inc\DelphiCrcBegin.inc}
Main( $12345678 );
{$I Inc\DelphiCrcEnd.inc}
MessageBox(0,'End','',0);
end.
У меня при запуске всегда появляется окно с цифрой "12345678", это и
понятно ведь CRC не нарушена, но совершенно не понятно как отреагирует
программа на изменившееся CRC, ведь именно в этом случае нужно
предпринимать каки-то действия.
3. В примере по использованию "Envelope Checks", если я запускаю его
из под отладчика то получаю сообщение о том что обертка не найдена,
что вполне логично, а после упаковки экзешника и запуска его получаю
сообщение о том что обертка найдена, что тоже нормально. Однако стоит
мне в пример Reg Trial в форму TfrmApp добавить такой обработчик:
procedure TfrmApp.FormCreate(Sender: TObject);
Function EnvelopeCheck: Boolean;
{$I Include\DelphiEnvelopeCheckFunc.inc}
begin
MessageBox(0,'Begin','',0);
{$I Include\DelphiEnvelopeCheck.inc}
If EnvelopeCheck then MessageBox(0,'Envelope found!','',0) else
MessageBox(0,'Envelope not found!','',0);
MessageBox(0,'End','',0);
end;
как и из под отладчика и после упаковки все равно программа находит
обертку, хотя при запуска из-под отладчика очевидно что ее нет. В чем
тут проблема?