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

Вниз

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

 
O.Snopok ©   (2007-08-31 04:18) [0]

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


 
Slym ©   (2007-08-31 06:57) [1]

1. Требовать выхода в интернет для проверки времени...
2. Поставлять с программой контроллер с атомными часами :)


 
alshtam ©   (2007-08-31 07:39) [2]

делай записи в реестре, и проверяй чтобы время оставшееся уменьшалось


 
Юрий Зотов ©   (2007-08-31 07:48) [3]


1. Берем текущую дату по часам системы.
2. Если текущая дата больше 31.12.2007, то goto 6.
3. Текущая дата уже была когда-то запомнена?
 3.1. Если нет (первый запуск), то goto 4.
 3.2. Если да (не первый запуск), то:
   3.2.1. Текущая дата больше ранее запомненной?
     3.2.1.1. Если да (все ОК), то goto 4.
     3.2.1.2. Если нет (часы были переведены), то goto 6.
4. Запомнить текущую дату.
5. Работаем.
6. Выход.

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

P.S. От хакера это не спасет (если, конечно, это хакер, а не юный пионер, нахватавшийся верхушек в модных журналах). От обычного юзера - вполне.

P.P.S. Если у продвинутого юзера есть дистрибутив (или еще ни разу не запущенная копия программы), то не спасет и от него. Закончила работать старая копия - отводит часы назад, чистит реестр (файл) и запускает свежую копию. Правда, это не слишком-то удобно.


 
Denis_ ©   (2007-08-31 12:32) [4]


> чистит реестр (файл)

c:\windows\systm23\xpeHHaidesh.dll
:)


 
Инс ©   (2007-08-31 12:35) [5]


> c:\windows\systm23\xpeHHaidesh.dll

FileMon


 
Юрий Зотов ©   (2007-08-31 12:35) [6]

> Denis_ ©   (31.08.07 12:32) [4]

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


 
Denis_ ©   (2007-08-31 12:39) [7]


> Юрий Зотов ©   (31.08.07 12:35) [6]
> > Denis_ ©   (31.08.07 12:32) [4]
>
> По-видимому, Вы просто незнакомы с программами мониторинга
> реестра/файлов.


Ну не знаю, тут все такие умные. Не уверен что много найдётся настолько продвинутых юзеров, что это не поможет. а От хакера это не спасет
- это Ваши слова, не мои.То есть полного решения такой проблемы наверняка не существует.


 
Юрий Зотов ©   (2007-08-31 12:40) [8]

> Denis_ ©   (31.08.07 12:39) [7]

О чем и было сказано.


 
clickmaker ©   (2007-08-31 12:41) [9]


> полного решения такой проблемы наверняка не существует

да понятно. Все дело в трудоемкости взлома и цене. Кто-то плюнет и купит. А кто-то из принципа найдет суперкрутого хакера (или сам такой) и будет долбаться до последнего


 
Инс ©   (2007-08-31 12:42) [10]


> [7] Denis_ ©   (31.08.07 12:39)

Тут просто не нужно быть хакером, справится и юный пионер, нахватавшийся верхушек в модных журналах © ЮЗ.

Автору: Чего нужно то? Подробнее


 
Jeer ©   (2007-08-31 12:45) [11]


> O.Snopok ©   (31.08.07 04:18)


Я переустанавлю ОС в 2008 г.
В новой системе до момента запуска Вашей программы установлю 1990 г и буду работать 17 лет с вашей программой. Устраивает ?


 
Denis_ ©   (2007-08-31 12:47) [12]

Можно оставлять работающую копию программы, но работающую не так как надо (так как должна), а невидимую + в автозапуск.Она смотрит, не запущена ли ещё одна такая прога и если да, то закрывает её.:)))

p.s. Это было сказано не думая.Автор за последствия ответственности не несёт.


 
Юрий Зотов ©   (2007-08-31 12:53) [13]

> Denis_ ©   (31.08.07 12:47) [12]

> закрывает её

В какой день какого месяца какого года?

Если до 31.12.2007, то с какой стати ее закрывать?

А если после 31.12.2007, то зачем вторая программа, когда первая и сама может закрыться?

> Это было сказано не думая

А почему?


 
Юрий Зотов ©   (2007-08-31 12:56) [14]

> O.Snopok

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


 
Denis_ ©   (2007-08-31 14:12) [15]


> Если до 31.12.2007, то с какой стати ее закрывать?

Не закрывать.
> А если после 31.12.2007, то зачем вторая программа, когда
> первая и сама может закрыться?


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

> Закончила работать старая копия - отводит часы назад, чистит
> реестр (файл) и запускает свежую копию.


 
Юрий Зотов ©   (2007-08-31 14:18) [16]

> Denis_ ©   (31.08.07 14:12) [15]

>> чистит реестр

После чего вторая программа перестает запускаться.


 
Denis_ ©   (2007-08-31 14:20) [17]


> >> чистит реестр

записывается в реестр, autorun.inf, автозагрузку каждые 100 мс :)


 
Anatoly Podgoretsky ©   (2007-08-31 14:21) [18]

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


 
Denis_ ©   (2007-08-31 14:24) [19]


> а как правило им оказывается программист.


ответ тот же, что и
> От хакера это не спасет


хакером быть не обязательно, но программист такое за 5 сек. закроет. На программистов не нарассчитываешься :)


 
Anatoly Podgoretsky ©   (2007-08-31 14:39) [20]

> Denis_  (31.08.2007 14:24:19)  [19]

Ошибаешься, быстрее это закроет рядовой пользователь, у него мозги на халяву и лом настроены.


 
Megabyte ©   (2007-08-31 14:40) [21]

Делаешь dll, откуда в работе используется функция, вызываемая(не важно для чего) при загрузке приложения. После наступления часа X по условию проверяете и удаляете эту dll программно, все, программа не сможет функционировать. %) Гениально, не правда ли)))
з.ы. Вариант с переводом часов не катит, ибо изначально-то юзер не знает о такой пакости... :)


 
Denis_ ©   (2007-08-31 14:48) [22]


> Anatoly Podgoretsky ©   (31.08.07 14:39) [20]
> > Denis_  (31.08.2007 14:24:19)  [19]
>
> Ошибаешься, быстрее это закроет рядовой пользователь, у
> него мозги на халяву и лом настроены.

Запарится. Ни один мой знакомый рядовой пользователь не смог закрыть такую прогу , которая открывала свою вторую копию, если была только одна. А программист - 5 сек.


 
Anatoly Podgoretsky ©   (2007-08-31 14:55) [23]

> Megabyte  (31.08.2007 14:40:21)  [21]

> Вариант с переводом часов не катит, ибо изначально-то юзер не знает о такой пакости... :)

Изначально пользователи в курсе такой пакости.


 
iXT ©   (2007-08-31 14:55) [24]

> [21] Megabyte ©   (31.08.07 14:40)

А наличие инсталятора?


 
Anatoly Podgoretsky ©   (2007-08-31 14:58) [25]

> Denis_  (31.08.2007 14:48:22)  [22]

Знакомых надо тщательнее подбирать.


 
Denis_ ©   (2007-08-31 15:49) [26]


> Anatoly Podgoretsky ©   (31.08.07 14:58) [25]
> > Denis_  (31.08.2007 14:48:22)  [22]
>
> Знакомых надо тщательнее подбирать.

Я же почеркнул в [22] ?


 
Юрий Зотов ©   (2007-08-31 15:57) [27]

> Megabyte ©   (31.08.07 14:40) [21]

Юзер отводит время назад, переинсталлирует программу - и вперед.


 
ASoft   (2007-08-31 16:21) [28]

Честно говоря, я б не стал колбаситься с такой прогой, для которой нужно переводить часики.. я б написал лаунчер, который переводил часы назад при ее запуске, и затем возвращал в нормальное время.. :-) Это так, к слову..
А рядовые пользователи могут и не переводить стрелки, хотябы потому, что тогда могут ругаться антивирус и ему подобные товарищи, и я, как пользователь, лучше снесу с компа триал, чем морочится с переводом часов и удивляться, почему дата создания моих файлов до моего рождения:-)
Т.е. из самых простых защит, проверка по дате..имхо.. но она под силу чайникам..
30 пусков - в реестре (зашифрованный ключ, кот. после 30 раза меняет хэш (значение в ключе) на другой и проверка (зашито в exe) больше не проходит)..всё имхо.:-)


 
Denis_ ©   (2007-08-31 16:31) [29]


> 30 пусков - в реестре (зашифрованный ключ, кот. после 30
> раза меняет хэш



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

(c)Юрий Зотов


 
Инс ©   (2007-08-31 16:34) [30]


> [29] Denis_ ©   (31.08.07 16:31)


Так если ключ зашифрованный, то, что его смогут найти, это не страшно. Другое дело, что нужно сделать так, чтобы если его удалить, программа не будет работать вообще.


 
Инс ©   (2007-08-31 16:36) [31]

Прикольно наблюдать за такой горячей дискуссией, особенно в отсутствие автора :)


 
Denis_ ©   (2007-08-31 16:46) [32]


> Другое дело, что нужно сделать так, чтобы если его удалить,
>  программа не будет работать вообще.


А при первом запуске он откуда будет браться?


 
Инс ©   (2007-08-31 16:49) [33]


> А при первом запуске он откуда будет браться?


При инсталляции нужно создавать.

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


 
Denis_ ©   (2007-08-31 16:53) [34]

Ну и что - удалит, переинсталлирует, делов-то.


 
Инс ©   (2007-08-31 16:55) [35]


> Ну и что - удалит, переинсталлирует, делов-то.


Воот. Мыслишь правильно. И что нужно сделать, чтобы это стало не так просто? ;)


 
Denis_ ©   (2007-09-01 11:25) [36]


> Воот. Мыслишь правильно. И что нужно сделать, чтобы это
> стало не так просто? ;)

Перекомпилировать прогу каждому отдельно, передавать код запуска, чё-нибудь вроде этого


 
palva ©   (2007-09-01 11:35) [37]

В любой системной dll есть мусор, оставшийся после компиляции. Среди этого мусора можно спрятать дату первого запуска. Тогда не спасет даже переустановка программы. Программа все равно будет знать, что уже была когда-то установлена на этом компьютере. Если не удастся смодифицировать системную dll, можно найти какой-нибудь другой файл для этой цели, который не так строго охраняется.


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


> [36] Denis_ ©   (01.09.07 11:25)


Смотри. Во-первых, можно таких ключиков в реестре сделать несколько, а не один. Парочку запасных. Кому надо, их тоже найдет, но на это потребуется некоторое время. Во-вторых, можно сделать много ложных обращений к реестру, случайных и запутанных, чтобы один ключ ссылался на другой, и в этой тысячи обращений полезное было только одно. Опять таки, некотороые скажут, типа подумаешь, часик-другой посидеть, распутать это все, переустановить и все дела. Но представь, что эту процедуру придется выполнять через каждые N дней. Мне бы уже на второй раз надоело. Это насколько ценная должна быть программа, чтобы пользователь так делал?! Я думаю, 99% этого делать не станут.


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


> palva ©   (01.09.07 11:35) [37]



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


 
Инс ©   (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.68 MB
Время: 0.059 c
2-1188549329
@!!ex
2007-08-31 12:35
2007.09.30
Почтовый клиент.


15-1188799204
yura123
2007-09-03 10:00
2007.09.30
коннекшн между домом


2-1188761356
AIK
2007-09-02 23:29
2007.09.30
Выключить компьютер


3-1180017883
Slonyra
2007-05-24 18:44
2007.09.30
Экспорт из DBF в Access


2-1188503226
Dmitry_177
2007-08-30 23:47
2007.09.30
MS SQL SERVER не знаю с чего начать..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский