Обнаружение изменения системного времени в Linux - PullRequest
0 голосов
/ 21 сентября 2010

Я читал о лицензировании программного обеспечения, и у меня возник вопрос: «Как программное обеспечение обнаруживает изменения в системном времени и блокирует себя, если кто-то меняет системное время?». Поскольку нет другой доступной ссылки (при условии, что у нас нет подключения к Интернету, в противном случае мы можем использовать серверы времени в качестве ссылки), как такое программное обеспечение справляется с этим? Существуют ли стандартные алгоритмы или любые стандартные библиотеки (C / C ++) для их реализации. Пожалуйста, предложите.

Спасибо заранее, Рави Гупта

Ответы [ 7 ]

4 голосов
/ 21 сентября 2010

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

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

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

1 голос
/ 21 сентября 2010

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

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

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

1 голос
/ 21 сентября 2010

Ваше программное обеспечение может регулярно запрашивать системное время (используя boost::posix_time::second_clock::local_time()) и сравнивать его с последним сохраненным значением. Если вы наблюдаете значительную отрицательную разницу, возможно, кто-то изменил системное время.

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

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

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

0 голосов
/ 21 сентября 2010

Вы всегда можете установить метку времени в файле на текущее системное время при каждом запуске приложения.

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

0 голосов
/ 21 сентября 2010

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

В древнем месте я работал, когда администратор изменил часы, потому что он забыл продлить лицензию.для компилятора.Не очень блестящая идея.В основном машина вскоре стала полностью непригодной для использования: NFS была испорчена, make не работал, много проблем.

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

0 голосов
/ 21 сентября 2010

clock_gettime (CLOCK_MONOTONIC, & ts) дает вам временную спецификацию, независимую от системного времени.Вы можете использовать его для вычисления смещения между CLOCK_REALTIME, и если это изменится, ваше системное время изменилось

0 голосов
/ 21 сентября 2010

Вы можете установить таймер, который проверяет каждые n тиков (один тик = один (множество) тактов процессора), если разница во времени системы положительна ... Должно быть достаточно проверять каждую секунду или даже раз в минуту.Обычно таймер не должен использовать столько ресурсов.Вы должны убедиться, что таймер использует такты, а не системные часы ...

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