Почему откат часов сбивает пробный срок

При первом запуске программа может сохранить дату установки и прибавить к ней 30 дней. При следующей проверке она сравнивает сохранённую дату с текущими системными часами: если срок ещё не истёк, доступ остаётся бесплатным. Если часы показывают более раннюю дату, программе может казаться, что до конца пробного периода ещё далеко.

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

Почему это не обязательно работает вечно

Уязвимость зависит от того, где и как программа хранит срок. Если она проверяет только дату на устройстве и не защищает сохранённые данные, откат часов может снова и снова откладывать момент окончания пробного периода. Но приложение может обнаружить несоответствие между проверками, использовать защищённый счётчик времени или сверяться с сервером. Тогда подмена системной даты не продлит доступ.

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