Самоучитель по программированию систем защиты




Собственный обработчик создания файла и собственный обработчик открытия файла



Собственный обработчик создания файла и собственный обработчик открытия файла

Собственный обработчик создания (открытия) файла может, например, проверить права доступа текущего процесса к создаваемому (открываемому) файлу, и если дос-

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

NTSTATUS HookCreateFile (OUT PHANDLE FileHandle,

IN ACCESS_MASK DesiredAccess,

IN POBJECT_ATTRIBUTES ObjectAttributes,

OUT PIO_STATUS_BLOCK loStatusBlock,

IN PLARGE_INTEGER AllocationSize, IN ULONG FileAttributes,

IN ULONG ShareAccess, IN ULONG CreateDisposition,

IN ULONG CreateOptions,IN PVOID EaBuffer,IN ULONG EaLength)

{

if (Access (ObjectAttributes) ) return RealCreateFile (FileHandle, DesiredAccess/ ObjectAttributes,

loStatusBlock, AllocationSize, FileAttributes, ShareAccess,

CreateDisposition, CreateOptions,EaBuf fer, EaLength) ; return STATUSACCESSDENIED;

 




Содержание  Назад