Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

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

 
Инс ©   (2007-09-01 11:39) [40]


> palva ©   (01.09.07 11:35)

Опять таки, FileMon


 
Denis_ ©   (2007-09-01 11:44) [41]


> Инс ©   (01.09.07 11:38) [38]

Я за реестр! Сууществует около 10 ключей, куда иожно записать загрузку проги при входе. А ЮЗ был против. Для запутывания реестра много ключей - хорошая идея.Пользовался уже?.

to Юрий Зотов Что Вы теперь скажете?


 
Virgo_Style ©   (2007-09-01 19:01) [42]

Denis_ ©   (01.09.07 11:39) [39]

+ антивирусы будут ругаться.


 
Reindeer Moss Eater ©   (2007-09-01 19:02) [43]

.... Сууществует около 10 ключей, .....

И один regmon.exe


 
Юрий Зотов ©   (2007-09-01 21:48) [44]

> Denis_ ©   (01.09.07 11:39) [39]
> to Юрий Зотов Что Вы теперь скажете?

Ничего. Потому что говорить уже ничего не надо. Потому что Вы сами уже все сказали:

По-видимому, Вы просто незнакомы с программами мониторинга реестра/файлов.
(c) Юрий Зотов


:o)


 
O.Snopok ©   (2007-09-01 23:20) [45]

{автор темы} Речь идет не о триале, а о неоконченной версии, которая, тем не менее, весьма функциональна, и ее нужно дать на время до конца года попробовать соответствующим людям. Причем, этим людям о такой "пакости" знать не обязательно (в моем конкретном случае). Более того, если даже текущая дата больше 31.12.2007, программа не сообщает, почему же она не работает, а просто пишет "Ошибка, обратитесь к разработчику". Все это, конечно, существенно упрощает дело.
Как я понимаю, фактически моя задача аналогична той, которая встает при необходимости сделать программу, работающую, к примеру, 30 дней. По всей видимости, вариант со множественными обращениями в реестр - оптимальный. Хотя от


> Jeer ©   (31.08.07 12:45) [11]
>
>
> > O.Snopok ©   (31.08.07 04:18)
>
>
> Я переустанавлю ОС в 2008 г.
> В новой системе до момента запуска Вашей программы установлю
> 1990 г и буду работать 17 лет с вашей программой. Устраивает
> ?


и это не спасет. Но вряд ли кому-то захочется переустанавливать систему ради одной проги.
В итоге, единственным 100%-ным вариантом является


> Slym ©   (31.08.07 06:57) [1]
>
> 1. Требовать выхода в интернет для проверки времени...


,но он применим, очевидно, разве что к даунлоад-менеджерам или браузерам.


 
Инс ©   (2007-09-02 00:40) [46]


> [45] O.Snopok ©   (01.09.07 23:20)

Вы сами себе поставили жесткие рамки. Почему именно до конца 2007 года? А почему нельзя, например, 100 дней от инсталляции? А почему нельзя зашить в программу время сборки (кстати, оно и так зашито, если надо, могу подсказать, как его вытащить) и если у пользователя время меньше этого, то также выдавать ошибку?


> [44] Юрий Зотов ©   (01.09.07 21:48)

Так мы вроде уже определились, как обезоружить недоброжелателя, вооруженного RegMon-ом.


 
Германн ©   (2007-09-02 00:55) [47]


> O.Snopok ©   (01.09.07 23:20) [45]

Для дальнейшего въезда в тему посмотри как твой вопрос реализован в библиотеке tponguard от бывшей, но лучшей (хм. почти по ВСВ:) конторы TurboPower. Может что и пригодится. Ищи библиотеку на sourceforge.


 
Denis_ ©   (2007-09-02 10:37) [48]


> кстати, оно и так зашито, если надо, могу подсказать, как
> его вытащить

Подскажи, вдруг пригодится?


 
Denis_ ©   (2007-09-02 10:38) [49]


> to Юрий Зотов Что Вы теперь скажете?

Это было сказано о
> Инс ©   (01.09.07 11:38) [38]


Что скажете?


 
Инс ©   (2007-09-02 10:39) [50]

>
> [48] Denis_ ©   (02.09.07 10:37)


function GetBuildTime: TDateTime;
var
 Offset:DWORD;
 FD:LongRec;
 Date,Time:TDateTime;
begin
 Result:=0;
 Offset:=PImageNtHeaders(HInstance+DWORD(PImageDosHeader(HInstance)._lfanew)).OptionalHeader.DataDirectory[IMAGE_DI RECTORY_ENTRY_RESOURCE].VirtualAddress;
 if Offset<>0 then begin
   Integer(FD):=PInteger(Offset+HInstance+4)^;
   if TryEncodeDate(FD.Hi shr 9+1980,FD.Hi shr 5 and 15,FD.Hi and 31,Date)
     and TryEncodeTime(FD.Lo shr 11,FD.Lo shr 5 and 63,FD.Lo and 31 shl 1,0,Time) then
     Result:=Date+Time;
 end;
end;


 
Denis_ ©   (2007-09-02 10:57) [51]


> Главный вопрос - где запоминать текущую дату? Можно в реестре
> или файле (в зашифрованном виде), можно в теле самой программы,
>  можно скомбинировать.

© Юрий Зотов.
Как это можно сделать?


 
Юрий Зотов ©   (2007-09-02 11:24) [52]

> Denis_ ©   (02.09.07 10:38) [49]

Не понимаю, с чем Вы пытаетесь спорить?

1. Что работа программы с реестром/файлами мониторится хорошо известными и легко доступными программами - это бесспорно? Бесспорно.

2. Что когда Вы писали [4], Вы этого или не знали, или не учли - это очевидно? Очевидно.

3. Что работу программы с реестром/файлами можно запутать бессчисленным количеством разных способов - это тоже очевидно? Тоже.
 
4. Что при желании всю эту путаницу можно распутать - с этим, надеюсь, Вы спорить не станете?

5. Что можно и ничего не распутывать, а просто отключить проверку - это тоже, надеюсь, понятно?

6. Вы полагаете, что способы затруднения такого распутывания мне неизвестны? Боюсь Вас разочаровать, но известны, и очень давно (да и придумать их - вовсе не бином Ньютона).

7. Что рядовому юзеру такое распутывание может оказаться не по зубам - с этим кто-нибудь спорил? Не спорил. Более того, об этом было сказано аж еще в [3].

8. Что в данном случае вряд ли кто вообще станет заниматься хоть каким-то взломом - это ясно? Ясно. Потому что не тот случай. Когда пройдет срок, юзеру будет гораздо проще получить новую версию программы, без всякой головной боли.

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


 
Anatoly Podgoretsky ©   (2007-09-02 11:33) [53]

> Юрий Зотов  (02.09.2007 11:24:52)  [52]

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

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

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

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


 
O.Snopok ©   (2007-09-03 23:57) [54]


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


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


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


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

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


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

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


 
O.Snopok ©   (2007-09-04 01:03) [56]

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


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


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

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

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


 
Slym ©   (2007-09-04 05:21) [58]

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


 
Slym ©   (2007-09-04 05:38) [59]

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


 
Anatoly Podgoretsky ©   (2007-09-04 08:47) [60]

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

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


 
Slym ©   (2007-09-04 09:43) [61]

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


 
Slym ©   (2007-09-04 09:44) [62]

order by dates desc


 
Anatoly Podgoretsky ©   (2007-09-04 10:08) [63]

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

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


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

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

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


 
O.Snopok ©   (2007-09-04 22:39) [65]


> Германн ©   (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 - лично у меня там "нереальных" нет, к тому же, их можно отсеивать. В связи с этим вопрос - насколько сложно изменить дату создания файла? А если он системный?


 
Anatoly Podgoretsky ©   (2007-09-04 22:43) [66]

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

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

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


 
Инс ©   (2007-09-04 23:02) [67]


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

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


 
vasIZmax ©   (2007-09-04 23:48) [68]

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

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

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

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


 
Slym ©   (2007-09-05 04:39) [69]

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

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


 
Anatoly Podgoretsky ©   (2007-09-05 10:11) [70]

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

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


 
Slym ©   (2007-09-05 10:41) [71]

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

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


 
Slym ©   (2007-09-05 10:43) [72]

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


 
Anatoly Podgoretsky ©   (2007-09-05 11:15) [73]

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



Страницы: 1 2 вся ветка

Текущий архив: 2007.09.30;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.025 c
15-1188938127
vasIZmax
2007-09-05 00:35
2007.09.30
ПО в кредит


15-1188815525
NailMan
2007-09-03 14:32
2007.09.30
Широкоформатный моник LCD 22" выбираю


15-1188484927
lookin
2007-08-30 18:42
2007.09.30
Про пиво и клаву...


2-1188969414
alshtam
2007-09-05 09:16
2007.09.30
печать


2-1188805897
Андрей Пл
2007-09-03 11:51
2007.09.30
Как узнать в консольном приложении имя машины