Показать полную графическую версию : [решено] Помогите ограничить срок роботы программы
Alex.sys
02-12-2008, 23:53
Доброе время суток. Короче пишется программа на Delphi 7. Надо сделать так что б она прожила 6 месяцев. А потом что б не запустилась. Например форма проекта. Помогите пожалуйста
Доброго.
Простенькую тайм бомбу можно организовать с помощью сравнений дат (http://forum.oszone.net/thread-66749.html) (установки и времени окончания работы) в реестре (http://forum.oszone.net/thread-49391.html).
Delirium
03-12-2008, 07:17
И добавить в прогу на проверочку условие: если вдруг кто нить удалит ветку реестра, то сразу не запускать прогу.
причём лучше зашифровать дату, чтоб не догадались, и ключ назвать не expiration date, а license key. Только не нарвись на проблемы с законодательством. Если не ты работаешь в конторе, которой прогу ставишь, программа должна отработать срок, уквзвнный в договоре (если не указан - лучше пусть не отключается). Если работаешь и разрабатывал её в рабочее время - можно отсудить у тебя эту программу и она должна тогда работать вечно.
Alex.sys
03-12-2008, 19:52
Admiral, Delirium, pva, спасибо вам. - Лучшим на этом форуме !!! Весьма вам благодарен
И еще - код программы желательно чем-нибудь зашифровать(имеется в виду готовый exe'шник). Алгоритм шифрования иначе легко находится. А еще посчитать контрольную сумму файла и записать ее куда-нибудь в инсталлятор. При установке просчитывать какой-нибудь хэш(да хоть тот же MD5) от (контрольная сумма проги + дата инсталляции) и писать в экзешник. При запуске пересчитывать CRC файла, читать дату инсталляции, хэшировать и сверять с необходимым хэшем в файле. Таким образом программа не запустится если изменится дата инсталляции или изменится хоть один байт в коде. Дату в реестре можно и не шифровать - открытым текстом. Пущай крякер помучается.
Alex.sys
03-12-2008, 22:26
Arrest, учту. Спасибо
Имхо, если программа небольшая, то зачем мусорить в реестре? Ведь по-хорошему придется еще делать деинсталлятор, для удаления всех этих записей в реестре...
В одной из своих программ использовал вот такой код:
program Fasad;
uses
Forms,
Sysutils,
Dialogs,
FasadNC in 'FasadNC.pas' {Form1},
Options in 'Options.pas' {OptionsForm};
const
YearExp = 2008;
MonthExp = 2;
DayExp = 15;
function CheckDate(y, m, d: Integer): Boolean;
begin
Result := True;
if (Date > EncodeDate(y, m, d)) then
begin
ShowMessage('Закончилось время использования программы');
Result := False;
end;
end;
{$R *.res}
begin
if CheckDate(YearExp, MonthExp, DayExp) then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TOptionsForm, OptionsForm);
Application.Run;
end;
end.
Alex.sys
03-12-2008, 23:26
detrin, эт то что надо!!! :jester: Спасибо большое!!! :)
Jurist_Juristov@fb
12-04-2012, 16:11
Умники, а что вы будете делать если дату на системных часах переведут?
Delirium
12-04-2012, 17:30
Jurist_Juristov@fb, ты бы сначала на дату постов внимание обратил, а потом умничал. 3 года назад человеку это было актуально.
Умники, а что вы будете делать если дату на системных часах переведут? »
это вопрос того насколько хорошо защищаться. тут уж тогда стоит задуматься а что если ктото дизасемблит и тупо выкинет код проверок на дату время или будет работать в какой нить супер мега песочнице.. фантазия большая.. но настолько ли это все надо автору поста
раз уж он спросил почему бы не ответить
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.