Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
Инс ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.807 c
15-1188394941
sdubaruhnul
2007-08-29 17:42
2007.09.30
Задача на оптимизацмю парковки


2-1188923583
ShyricK
2007-09-04 20:33
2007.09.30
Звук на спикер


2-1189080006
maslcs
2007-09-06 16:00
2007.09.30
внешний вид scroll а в компоненте webBrowser


15-1188799430
vajo
2007-09-03 10:03
2007.09.30
Что-то не пойму как у ноутбука отключить цифровую клавиатуру


1-1184918084
Makhanev Alexander
2007-07-20 11:54
2007.09.30
Restart сервиса...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский