Как обнаружить системный откат даты? - PullRequest
1 голос
/ 16 ноября 2010

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

Ответы [ 4 ]

2 голосов
/ 17 ноября 2010

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

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

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

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

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

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

2 голосов
/ 16 ноября 2010

Ну, вы можете использовать встроенную базу данных в вашей программе с зашифрованной системной датой, которая вставляется в каждый момент времени.Если вы видите, что «более новая» дата предшествует некоторой предыдущей дате, вы можете видеть, что кто-то изменил системную дату.Это просто идея.

0 голосов
/ 16 ноября 2010

Я думаю, что предпочитаю @ darioo иметь зашифрованный лог. Просто подумал, что добавлю, что изменения системного времени записываются в журнал безопасности Windows с EventID 4616. Вот сообщение:

The system time was changed.

Subject:    
    Security ID:             TheComputer\Me     
    Account Name:            Me     
    Account Domain:          TheComputer    
    Logon ID:                0x283df

Process Information:    
    Process ID:              0x12b8     
    Name:                    C:\Windows\System32\dllhost.exe

Previous Time:               s010-‎11‎-‎15T09:10:32.000000000Z 
New Time:                    ‎2010‎-‎11‎-‎15T09:10:32.000000000Z

This event is generated when the system time is changed. It is normal for the Windows 
Time Service, which runs with System privilege, to change the system time on a regular 
basis. Other system time changes may be indicative of attempts to tamper with the 
computer.

Конечно, журнал аудита может быть очищен с соответствующими разрешениями. Так что это можно обойти. Кроме того, я использую Windows 7 - это также на Windows Server 2008 и есть эквивалент на Windows Server 2003 (http://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=4616).

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

0 голосов
/ 16 ноября 2010

Другая идея также заключается в добавлении подключения NTP для получения текущей даты из Интернета.

...