Запрет удаления объекта
От: Аноним  
Дата: 14.01.08 23:06
Оценка:
Привет.

Есть проблема алгоритмического характера, так сказать.
Представим себе фильтр реестра, будь то перехват SDT либо CmRegisterCallback() — не важно.
Допустим, мы имеем ключ реестра \Registry\Machine\TestKey, и в нём значение TestValue.
Таким образом полный путь к значению TestValue будет таким — \Registry\Machine\TestKey\TestValue.

Представим теперь, что у нашего фильтра есть правило — запрещать удаление данного значения.
В перехватчике NtDeleteValueKey() фильтр без труда получает полный путь, смотрит правила, находит нужное и возвращает STATUS_ACCESS_DENIED.

Но вот попадается нам злонамеренная программка, которая решает обойти наш фильтр.
Поступает она просто: дёргает NtDeleteKey(), передавая ей \Registry\Machine\TestKey.
Ключ удалён, и наше драгоценное значение — тоже, что недопустимо.

Тоже самое касается и файлового фильтра — при удалении папки, удалятся содержащиеся в ней файлы, а файловый фильтр на это не отреагирует.
В голову приходит только одно решение и то кривое до ужаса — добавлять в список дополнительные правила, запрещающие удалять весь \Registry\Machine\TestKey, а также весь \Registry\Machine и конечно же весь \Registry, но это бред по-моему.

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