Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать ограничение работы программы по дате?


Страницы:   1 2 3 4

O.Snopok ©   (2007-08-31 04:18:00) 

Мне нужно, чтобы программа работала только до конца 2007 года. Как это реализовать таким образом, чтобы "проблема" не решалась простым переводом виндовских часов?


Anatoly Podgoretsky   (2007-09-05 11:15:00) [1]

И как только выяснится, что автор преднамерено это сделал, то усилия на информирование общественности надо удвоить, что бы другие не попались на этот лохотрон.


Slym   (2007-09-05 10:43:00) [2]

Anatoly Podgoretsky ©   (05.09.07 10:11) [70]
Винду не выбрасываешь? Bill Gates must die?
а патчи выходят регулярно :)


Slym   (2007-09-05 10:41:00) [3]

Если программой пользовались (без ошибок) весь лицензионный период (подсели на продукт), а потом вдруг повалили ошибки то с высокой долей вероятности пользователи обратятся к разработчику - дальше дело техники.

Надежный способ - "обратиться к разработчику" :) за исправлением, а в данном случае за продлением лицензии


Anatoly Podgoretsky   (2007-09-05 10:11:00) [4]

> Slym  (05.09.2007 04:39:09)  [69]

Очень надежный способ отправить программу в корзину, а автора занести в черный спискок как неумейку и раструбить об этом по Инету.


Slym   (2007-09-05 04:39:00) [5]

принцип - программу с ошибками проще выбросить...
способ защиты-ошибки зависит от типа программы -
игра- занижаем фпс, отключаем saveлки (или их коцаем)
редактор текстовый/графич- отключаем saveлки ухудшаем графику, вылетаем случайно при долгом несохранении :)
считалки чего либо- неточно или неправильно считать...
формировалка отчетов- нагл лабел, очепятки автозамены (директор - казел)
сервисная программа- ничего лучше потери размножения хендлов не придумал :), или случайных вылетов недопустимых при непрерывной работе
f:=TFileStream.Create
try
//работаем
finally
 if registered then f.Free;
end

работа с инетом- лепим трояна, spyware или все что угодно
для всего что угодно- ошибка кодировки весь или часть текста в левой кодировке, шрифте (symbol) или сдвигсимвола-1


vasIZmax   (2007-09-04 23:48:00) [6]

Попытаюсь предложить свой вариант, может и не 100% работающий, мало ли может кого и на мысль какую натолкнет.

Создать предварительно форму с "Логин/Пароль" + чекер "запомнить пароль".
Первый раз пользователь вводит пароль и возможно (по-праграммистски как-то:)) отметит запомнить пароль.
После каждого перезапуска проги пароль видоизменять в файле таким образом чтобы в него записывалось последняя дата запуска (понятно, что можно помудрить с этим файлом хранящим пароль). После анинстала записывать в реестр, а при новой попытке инстала - предварительно прочитать эти данные из реестра.

А вообще "схема" защиты связанная с вызовом ошибок различных по окончанию срока - интересна... хотя б в качестве развлечения:)

P.S. "Пиши программы которые будет дешевле купить, чем взломать" (с)


Инс   (2007-09-04 23:02:00) [7]


> Проглядите даты создания файлов в system32 - лично у меня
> там "нереальных" нет, к тому же, их можно отсеивать.

Видимо имеется в виду не дата создания, а Last Access. А что будет, если перевести время назад и перезагрузиться? ;)


Anatoly Podgoretsky   (2007-09-04 22:43:00) [8]

> O.Snopok  (04.09.2007 22:39:05)  [65]

> В связи с этим вопрос - насколько сложно изменить дату создания файла? А если он системный?

Никакой сложности, элементарнейшая задача для начинающего программиста, или просто воспользоваться готовыми программами, например сторонними файловыми менеджерами, даже из ДОС


O.Snopok   (2007-09-04 22:39:00) [9]


> Германн ©   (04.09.07 01:31) [57]
>
>
> > O.Snopok ©   (04.09.07 01:03) [56]
> >
> > но если текущее время между временем компиляции и временем-
>
> > компиляции + время-которое-вы-разрешаете-работать-с-программой,
>
> >  то все отлично работает :) то есть, вопрос все так же
> решается
> > простым переводом часиков
> >
>
> Я так понимаю, что Германн ©   (02.09.07 00:55) [47] ты
> просто проигнорировал. Жаль! Жаль что даёшь советы, а они
> канут в пустоту. :(((


Вовсе нет, просто та библиотека сейчас находится в процессе моего изучения:)


> Котик Б   (04.09.07 10:18) [64]
>
> Проститеза то, что нагло вмешиваюсь в ваш высоконаучный
> спор :)
>
> Но я бы не стал делать никакой защиты - а ограничил бы функциональность
> таким образом, что при некотором сроке работы с программой
> с ней было бы  психологически  некомфортно работать ...
> как демо-версия в игрушках...


Проблема-то остается - как отсчитывать этот самый срок работы?


> Slym ©   (04.09.07 05:38) [59]
>
> а текущую дату можно выяснить: сканированием %windir%\*.
> *, system32\*.* и брать время файлов из них выбираем 10
> с максимальной датой и усредняем :)
> если есть сетка (а она есть почти везде) можно просканить
> время соседних кампов


А вот эта идея, кажется, и впрямь неплоха. Проглядите даты создания файлов в system32 - лично у меня там "нереальных" нет, к тому же, их можно отсеивать. В связи с этим вопрос - насколько сложно изменить дату создания файла? А если он системный?


Котик Б   (2007-09-04 10:18:00) [10]

Проститеза то, что нагло вмешиваюсь в ваш высоконаучный спор :)

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


Anatoly Podgoretsky   (2007-09-04 10:08:00) [11]

> Slym  (04.09.2007 09:43:01)  [61]

(2000*9+2100)/10=2010 и это только для одной подобной даты
А по нижней границе 1980*10/10=1980


Slym   (2007-09-04 09:44:00) [12]

order by dates desc


Slym   (2007-09-04 09:43:00) [13]

Anatoly Podgoretsky ©   (04.09.07 8:47) [60]
поэтому усредняется - select avg(dates) from (select top 10 dates from files)


Anatoly Podgoretsky   (2007-09-04 08:47:00) [14]

> Slym  (04.09.2007 05:38:59)  [59]

Я поостерегся бы опираться на даты файлов, поскольку лично наблюдал, как некоторые программы создают файлы с датой далеко в будущем.


Slym   (2007-09-04 05:38:00) [15]

а текущую дату можно выяснить: сканированием %windir%\*.*, system32\*.* и брать время файлов из них выбираем 10 с максимальной датой и усредняем :)
если есть сетка (а она есть почти везде) можно просканить время соседних кампов


Slym   (2007-09-04 05:21:00) [16]

1. Неявная защита...
По достижении 2008г не обязательно сразу отрубатся...
2. В случайность нагл скрена
Не при запуске! а во время работы программы, случайным образом, с увеличением вероятности...
3. Множественная проверка для затруднения отладки (не единая точка входа) с различными алгоритмами проверки...
дублирование кода проверки в нескольких модулях...
4. Ничего никуда не писать...
Это легко отлавливается...
5. Затруднение отладки и комфортного использования:
можно в несколько потоков, внесение ошибок в код срабатывающих при окончании триал периода (мемлики, потеря хендлов, запись нетуда)
6. Для особо наглых убийство системы... (чикаем разные dll, вываливаем в BSOD, меняем обои на "заплати нам!",набираем модемом уругвай)


Германн   (2007-09-04 01:31:00) [17]


> O.Snopok ©   (04.09.07 01:03) [56]
>
> но если текущее время между временем компиляции и временем-
> компиляции + время-которое-вы-разрешаете-работать-с-программой,
>  то все отлично работает :) то есть, вопрос все так же решается
> простым переводом часиков
>

Я так понимаю, что Германн ©   (02.09.07 00:55) [47] ты просто проигнорировал. Жаль! Жаль что даёшь советы, а они канут в пустоту. :(((

P.S. Если в том посте тебя смутило упоминание ВСВ, то заверяю, что к Borland C Builder сие упоминание не относится! :-)


O.Snopok   (2007-09-04 01:03:00) [18]

но если текущее время между временем компиляции и временем-компиляции + время-которое-вы-разрешаете-работать-с-программой, то все отлично работает :) то есть, вопрос все так же решается простым переводом часиков


Инс   (2007-09-04 00:01:00) [19]


> что 100 дней, что до конца 2007 - какая разница?

Разница в общем то есть. Когда известно время компиляции, можно вычислить перевод времени назад. Если текущее время меньше, чем время компиляции, то программа не запускается. А если вы будете проверять только по концу 2007 года, то действительно, переведу часы на 10 лет назад, и все дела.


> время сборки можно зашить

Не нужно, см [50]


O.Snopok   (2007-09-03 23:57:00) [20]


> Инс ©   (02.09.07 00:40) [46]
>
>
> > [45] O.Snopok ©   (01.09.07 23:20)
>
> Вы сами себе поставили жесткие рамки. Почему именно до конца
> 2007 года? А почему нельзя, например, 100 дней от инсталляции?
>  А почему нельзя зашить в программу время сборки (кстати,
>  оно и так зашито, если надо, могу подсказать, как его вытащить)
> и если у пользователя время меньше этого, то также выдавать
> ошибку?
>


что 100 дней, что до конца 2007 - какая разница? суть задачи не меняется. время сборки можно зашить, но ведь проблема с возможностью перевести часы не исчезает...


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо