Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Получение реальной даты по косвенным признакам


Автор: M1ndAction 8.9.2010, 07:05
Добрый день!

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

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

Автор: Keeper89 8.9.2010, 07:24
M1ndAction, в чем принципиальность отслеживания даты для защиты?

Автор: M1ndAction 8.9.2010, 07:30
Keeper89, Пользователь будет покупать программу на определенный период (1, 3, 6 или 12 месяцев), так что без даты здесь никак smile

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

Автор: Keeper89 8.9.2010, 08:16
Посмотрите http://delphi.about.com/od/productreviews/l/aa022503a.htm и поищите другие соответствующие компоненты, с 0 это сделать достаточно сложно (полноценную защиту).
Ну и может Вам еще что подскажут smile

Автор: M1ndAction 8.9.2010, 10:38
Keeper89, спасибо за ссылку, очень интересно, буду изучать исходники компонента (если они открыты smile)
Я понимаю, что серьезную защиту просто так не сделаешь, но учитывая специфику программы - рассчитана на узкий круг специалистов, то, что я делаю, думаю,  будет достаточно. 

Поэтому, пока вопрос остается открытым smile

Автор: Keeper89 8.9.2010, 15:38
Цитата(M1ndAction @  8.9.2010,  10:38 Найти цитируемый пост)
рассчитана на узкий круг специалистов, то, что я делаю, думаю,  будет достаточно. 

Из простых вариантов могу предложить следующее:  smile 
Сделайте "файлик с лицензией" закрытого формата, в котором будет отсчитываться время до конца срока действия программы. При его удалении или нарушении структуры лицензия будет аннулироваться.

Автор: Proxin 8.9.2010, 22:13
не вариант. пользователь может просто скопировать файл в самом начале, а потом, по истечении срока, заменять его.

Автор: Keeper89 8.9.2010, 22:22
Ну. дату/время тоже можно записывать и анализировать.
Предупреждая вопрос - что будет если перевести часы - речь о простой защите.

Автор: Proxin 9.9.2010, 08:55
Да, и перевод часов. Самое надёжное - интернет-активация и отдельный сервер, но тут не получится.

Автор: M1ndAction 9.9.2010, 09:45
Цитата(Proxin @  8.9.2010,  22:13 Найти цитируемый пост)
не вариант. пользователь может просто скопировать файл в самом начале, а потом, по истечении срока, заменять его. 

Совершенно верно, именно по этой причине пришлось отказаться от почасовой лицензии.

Цитата(Keeper89 @  8.9.2010,  22:22 Найти цитируемый пост)
Предупреждая вопрос - что будет если перевести часы - речь о простой защите.

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

Цитата(Proxin @  9.9.2010,  08:55 Найти цитируемый пост)
Самое надёжное - интернет-активация и отдельный сервер

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

Автор: Frees 9.9.2010, 20:25
Цитата(M1ndAction @  9.9.2010,  12:45 Найти цитируемый пост)
Для того и хочу определять время по какому-нибудь изменяемому файлу (может системному)

у этого файла будет дата изменения которая сейчас на часах.


Автор: БелАмор 9.9.2010, 20:26
Цитата(M1ndAction @  8.9.2010,  07:30 Найти цитируемый пост)
предполагается, что пользователь будет использовать программу на разных компьютерах с usb-ключом.


Поскольку использование USB-ключа уже предполагается, то неплохим вариантом могло бы быть использование ключа с внутренним отсчётом времени. Сейчас лениво искать, но там достаточно широкие возможности, вплоть до продления лицензии дистанционно (можно хоть по телефону код продиктовать).

Автор: M1ndAction 9.9.2010, 20:47
Цитата(Frees @  9.9.2010,  20:25 Найти цитируемый пост)
у этого файла будет дата изменения которая сейчас на часах.

Понятно, что это не самый надежный способ, но с определенной погрешностью можно определять время. Если пользователь поработает за компьютером некоторое время, то дата у подобных файлов "собьется", но как мне кажется в данном случае пользователь переставит время и тут же попробует запустить программу. 
Насколько я помню, у KAV раньше была проблема со временем, затем с некоторой версии они писали, что теперь перевод времени не сможет сбить регистрацию, значит способ есть, хотя возможно, они ее через Интернет пробивают.

Цитата(БелАмор @  9.9.2010,  20:26 Найти цитируемый пост)
Поскольку использование USB-ключа уже предполагается, то неплохим вариантом могло бы быть использование ключа с внутренним отсчётом времени. Сейчас лениво искать, но там достаточно широкие возможности, вплоть до продления лицензии дистанционно (можно хоть по телефону код продиктовать). 

Да-да, тоже была мысль про это. Но в обычных HASP, как я понимаю, таймеры реального времени реализованы аппаратно, а если делать программный, то прошедшее время нужно хранить в файлах, и здесь мы возвращаемся к вышеобозначенной проблеме - можно легко восстановить первоначальные/удалить лишние файлы. Поэтому, по возможности, посмотрите материал, про который вы упомянули, очень интересно было бы почитать.


Автор: Frees 9.9.2010, 20:57
решение того что ты хочешь - это "железные" часы

http://senselock.ru/ - есть у них ключ с часами.





Автор: БелАмор 9.9.2010, 21:59
Навскидку:
http://www.aladdin.ru/catalog/hasp/models/HASP_HL_Time.php
Далее - на странице выбираете ключевые слова и скармливаете их поисковику...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)