LiteNet.Ru - Актуально о ПК и ПО. 2006-2019.
СТАТЬИ | НОВОСТИ | ПРОГРАММЫ | ОБРАТНАЯ СВЯЗЬ | КАРТА САЙТА
Сейчас на сайте: 8 пользователей онлайн
Обновления
Комментарии мега sb зеркало - ... [19.04.24]
Материал Установил CentOS 7 как легко и просто настроить ssh доступ? [24.03.24]
Комментарии Спасибо... [17.02.24]
Материал Форма ввода php [08.05.23]
Материал Windows 11 LTSC выйдет во второй половине 2024 года [08.05.23]
Материал Microsoft прекратит выпуск обновлений для Windows 10 [29.04.23]
Комментарии Огромный респект и... [04.10.22]
Комментарии не помогло... [10.07.22]
Комментарии не получается войт... [02.11.21]
Комментарии Да нет в редакторе... [05.10.21]
Комментарии Toshiba Tecra s11 ... [21.07.21]
Комментарии Все получилось, сп... [21.07.21]
Комментарии не сработало... [04.06.21]
Комментарии Доброго времени! У... [27.03.21]
Комментарии У меня этот метод ... [19.03.21]
Комментарии всё испробовал,не ... [17.03.21]
Материал Представлена настоящая зарядка по воздуху Xiaomi Mi Air Charge [31.01.21]
Материал Отныне для запуска WhatsApp на ПК и в браузере требуется биометрия [31.01.21]
Материал Google Chrome 88.0.4324.104 [31.01.21]
Материал Avast Free Antivirus 20.10.5824 [31.01.21]
Материал Яндекс.Браузер 20.12.3.138 [31.01.21]
Материал Maxthon 6.1.1.1000 [31.01.21]
Материал MKVToolnix 53.0.0 [31.01.21]
Материал ProduKey 1.95 [31.01.21]

RSS

Последние добавленные статьи

Delphi: Как обойти ограничение программ по сроку действия
31.10.2006

Некоторые производители программного обеспечения привязывают свой продукт к определенным временным рамкам, в пределах которого программа сохраняет свою работоспособность. При завершении такого периода она либо перестает запускаться, либо продолжает работать с функциональными ограничениями, а ежели это ShareWare, то начинает требовать регистрацию. Мотивация таких мер может быть совершенно различна. Чаще всего это попытка воспрепятствовать нелегальному распространению своей продукции. При этом программа во время инсталляции сохраняет каким-нибудь образом стартовую дату и при каждом запуске сверяет ее с заданным интервалом, в пределах которого она работает в демонстрационном или полнофункциональном режиме.

По ходу работы мне приходится сталкиваться и с другими случаями. Вот, например, последний. Всем известная фирма регулярно выпускает электронный каталог своей продукции с ценами и техническими характеристиками. "Регулярно" потому что цены актуальны только в пределах определенного времени, да и ассортимент время от времени пополняется новыми позициями, а старые снимаются с производства. Каталог этот выпускается каждые полгода, соответственно и "срок годности" у него рассчитан на этот период. Но беда в том, что своевременно обновлять этот каталог не получается. Поэтому приходится продлевать жизнь просроченному. Как правило, сверка даты происходит во время запуска программы. Это самый распространенный случай, обход которого и будет рассмотрен ниже. Я также встречал проверку спустя непродолжительный интервал времени (примерно 30 сек). Все зависит от хитрости разработчиков, они ведь тоже не глупые люди :-). Но даже и с таким вариантом справиться очень легко!

program BackTime; {$APPTYPE CONSOLE}

uses ShellApi,Windows,SysUtils;

var Today:TDateTime;
    bkTime, bkProgram: String;
    Interval, j: SmallInt;
begin
  Today:=Date; // фиксируем реальную дату
  if ParamCount3
  then
   begin // если параметры не заданы то печатаем подсказку
    WriteLn(output,'BackTime (c)DSKalugin@rambler.ru');
    WriteLn(output,'---------------------');
    WriteLn(output,'BackTime.exe T I P');
    WriteLn(output,'T - Date;');
    WriteLn(output,'I - Interval, [sec];');
    WriteLn(output,'P - Program');
    WriteLn(output,'---------------------');
    WriteLn(output,'Example:');
    WriteLn(output,'BackTime.exe 04.01.2000 15
                                "C:\Program Files\program.exe"');
   end
  else
   begin
    // 1й параметр - дата
    bkTime:=ParamStr(1);
    // 2й параметр - интервал в секундах
    Interval:=StrToInt(ParamStr(2));
    // 3й параметр - полный путь к программе
    bkProgram:=ParamStr(3);
    // установка необходимой даты
    WinExec(PChar('cmd /c date '+bkTime), SW_HIDE);
    // запуск программы
    ShellExecute(0, 'open', PChar(bkProgram), nil, nil, SW_SHOW);
    j:=0;
    while j     begin  // задержка в секундах
      sleep(1000);
      inc(j);
     end;
    // восстанавливаем реальную дату
    WinExec(PChar('cmd /c date '+DateToStr(Today)), SW_HIDE);
   end
end.

Как видите, все очень просто! Предлагаемая утилита BackTime запускается из командной строки и принимает 3 параметра:

  1. Дата, при которой программа является работоспособной. Формат даты должен соответствовать заданному в системе.
  2. Интервал времени в секундах до восстановления реального времени.
  3. Сама программа. Если в пути присутствуют пробелы, то необходимо параметр взять в двойные кавычки.

Задержка перед восстановлением реальной даты нужна в любом случае. Во-первых программе требуется несколько секунд для полной загрузки. А во-вторых, как сказано выше, некоторые хитрецы делают сверку не сразу.

Как теперь это использовать? На рабочем столе создаем ярлык...

Как использовать программу?!

Вот и все!

Что еще почитать?


Оставленные комментарии:


28:11:11, 19:07 .:|:. Написал: андрей
а как обхитрить ограничение во времени?

1 Комментарий


Введите Ваше имя:


Не используйте HTML и ВВ-коды - не работает. Пользуйтесь смайликами :)
Very HappySmileLaughingCoolWinkSurprised
RazzSleepSadShockedEvil or Very MadRolling Eyes

В этом поле Вы можете ввести текст комментария:


До конца всего осталось символов

Код на БОТливость: Код на БОТливость:
Введите код: