У меня есть плеер, который в процедуре «FormCreate» загружает в себя данные, и уже с помощью процедур «Vverx», «Vniz», «Vlevo», «Vpravo» листает списки на экране.
Процедура «FormCreate» большая, поэтому защищаю её частями, используя маркеры.
В начале «FormCreate» у меня есть такой код, он защищен режимом «Ультра», этот код загружает серийник и проверяет его:
Code: Select all
if not FileExists(extractfilepath(Application.ExeName) + 'serial.txt') then
begin
ShowMessage('В папке с программой не найден файл serial.txt Загрузка программы невозможна.');
Halt;
end;
// Загружаю код
sN := '';
Memo1.Lines.LoadFromFile(extractfilepath(Application.ExeName) + 'serial.txt');
for i := 6 to Memo1.Lines.Count - 1 do
sN := sn + Memo1.Lines[i];
Memo1.Lines.Clear;
nState := VMProtectSetSerialNumber(pansichar(sN));
if nState and SERIAL_STATE_FLAG_CORRUPTED <> 0 then
begin
ShowMessage('Система лицензирования повреждена.');
Halt;
end;
if nState and SERIAL_STATE_FLAG_INVALID <> 0 then
begin
ShowMessage('Серийный номер некорректен. Cистема лицензирования не может расшифровать серийный номер.');
Halt;
end;
if nState and SERIAL_STATE_FLAG_BLACKLISTED <> 0 then
begin
ShowMessage('Серийный номер подходит к продукту, однако занесен в черный список.');
Halt;
end;
if nState and SERIAL_STATE_FLAG_BAD_HWID <> 0 then
begin
ShowMessage('Идентификатор оборудования не совпадает с тем, что записан в серийном номере.');
Halt;
end;
if nState and SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED <> 0 then
begin
ShowMessage('Серийный номер устарел и не предназначен для работы с этой версией программы.)';
Halt;
end;
Code: Select all
if VMProtectGetSerialNumberState <> 0 then Halt;
Процедуры «Vverx», «Vniz», «Vlevo», «Vpravo» защищены режимом «Ультра» с привязкой к коду.
Я понятия не имею как взламываются программы, где, как правило находятся слабые места. Достаточно ли моих действий для адекватной защиты? Заранее спасибо.