Предотвратите переписывание файла в "пред, создают отзыв" / "почта, создают отзыв"

Я пишу драйвер для мини-фильтра, который предназначается, чтобы предотвратить письмо в файлы PE. Я регистрирую содержание файла, постсоздают отзыв. Если формат соответствовал, я пытаюсь звонить FltCancelFileOpen и возвращение STATUS_ACCESS_DENIED .

Но это может быть угнано вводным файлом с CreateDisposition = FILE_OVERWRITE/FILE_OVERWRITE/FILE_SUPERSEDE . В этом случае файл уже усеченный во время запроса "почты, создают отзыв".

Как преодолеть это?

0
nl ja de
Couldn' t вы проверяете, существует ли файл прежде, чем позволить файловой системе попытаться создать его, и если это делает, проверьте формат файла и при необходимости немедленно отклоните запрос?
добавлено автор Harry Johnston, источник

2 ответы

Better option will be check in pre-create callback and deny file opens with write access for existing files. You can do that by returning FLT_PREOP_COMPLETE from pre-create and setting appropriate error in CallbackData->IoStatus.Status.

1
добавлено
Это невыполнимо, чтобы выйти, другая операция открытия файла в предварительно создают отзыв. Кроме того, открытие файла может потерпеть неудачу в, предварительно создают из-за туннелирования имени файла в ЖИРЕ и файловых системах NTFS. Я думаю, что более уместно заменить FILE_OVERWRITE/FILE_SUPERSEDE к FILE_OPEN, FILE_OVERWRITE_IF к FILE_OPEN_IF (те же самые расположения, не усекая) в предварительно создают. Тогда регистрируйте содержание файла, постсоздают и подражают усечению файла для FILE_OVERWRITE/FILE_SUPERSEDE/FILE_OVERWRITE_IF.
добавлено автор dc0, источник

попробуйте это:

 FltCancelFileOpen( FltObjects->Instance, FltObjects->FileObject );
 Data->IoStatus.Status = STATUS_ACCESS_DENIED;
 Data->IoStatus.Information = 0;

и возвратитесь

FLT_POSTOP_FINISHED_PROCESSING;

полный пример в примере сканера Microsoft в GitHub

0
добавлено
Про Windows
Про Windows
941 участник(ов)

Microsoft Windows и всё, что с этим связано. Список интересных групп и каналов: https://github.com/goq/telegram-list

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot