Приемы, облегчающие работу противника. Часть 10.
Для того чтобы ограничить период возможного использования продукта, необходимо в некоторой области компьютера сохранить дату установки или количество запусков. Обычно для этого используются произвольные файлы или реестр (Registry Database). Многие считают, что, спрятав такой счетчик в самый дальний угол операционной системы, они сделают невозможным обнаружение его местоположения, а следовательно, и сброс счетчика.
Однако существует два семейства инструментов, позволяющих определить, где именно располагается счетчик. К первому семейству относятся программы-мониторы. Они отслеживают все обращения к файлам или реестру и протоколируют те из них, которые попросил запомнить пользователь. Мониторы обычно состоят из двух частей: драйвера, устанавливаемого в ядро операционной системы, и интерфейсной части, посредством которой пользователь имеет возможность управлять работой монитора и получать результаты протоколирования. Наиболее известными являются, наверное, программы File System Monitor и Registry Monitor, разработанные компанией Sysinternals.
Однако программы могут противодействовать мониторам. Очень важен тот факт, что монитор является активным инструментом — для того чтобы монитор выполнял свои функции, он должен находиться в памяти во время работы исследуемой программы. Следовательно, защищенная программа может обнаружить присутствие монитора и скорректировать свое выполнение разными способами. Например, она может просто отказаться работать, если в памяти присутствует монитор. Другой способ заключается в посылке интерфейсной части монитора сообщения о необходимости завершения работы. При этом монитор оказывается выгруженным из памяти, программа продолжает функционирование в чистом окружении. Красиво выглядит и следующий способ: защищенная программа посылает драйверу монитора команду временно приостановить регистрацию событий, выполняет важные обращения, а затем снова разрешает драйверу работать. При этом интерфейсная часть монитора никак не отражает тот факт, что работа драйвера была откорректирована. И пользователь находится в полной уверенности, что программа не производила никаких обращений, в то время как они имели место, но монитор в это время просто был отключен.