Форум: "Начинающим";
Текущий архив: 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