Копирование файлов в режиме ядра и обнаружение сценариев копирования файлов
В этой статье описываются функции копирования файлов в режиме доверенного ядра, представленные в Windows 11 версии 22H2. Эта функция позволяет фильтрам легко обнаруживать сценарии копирования. Это полезно для антивирусных фильтров (AVS), позволяя им определить, могут ли они отложить или полностью пропустить сканирование исходных и целевых файлов во время копирования.
Чтобы убедиться, что операции чтения и записи в режиме ядра безопасно помечены как часть операции копирования, были сделаны следующие обновления:
Добавлен флаг FILE_CONTAINS_EXTENDED_CREATE_INFORMATION и структура EXTENDED_CREATE_INFORMATION. Этот флаг и структура используются для сигнала о намерении копирования во время создания с помощью NtCreateFile. Структура EXTENDED_CREATE_INFORMATION выступает в качестве оболочки для существующего параметра EaBuffer NtCreateFile.
При указании флага FILE_CONTAINS_EXTENDED_CREATE_INFORMATION диспетчер ввода-вывода интерпретирует параметры EaBuffer и EaLength как структуру EXTENDED_CREATE_INFORMATION . Затем диспетчер ввода-вывода анализирует поля этой структуры, как если бы они были предоставлены непосредственно в NtCreateFile. Базовые фильтры не изменяются в поведении расширенных атрибутов.
Добавлены фильтры для фильтров, чтобы проверить, был ли файл открыт для намерения копирования.
NtCopyFileChunk добавлен для копирования в режиме ядра.
Все операции чтения и записи из NtCopyFileChunk :
- Режим запрашивателя IRP, заданный для KernelMode
- Расширение IRP типа IopCopyInformationType.
Фильтры не имеют доступа к расширениям IRP напрямую, но могут проверять наличие этого расширения и получать сведения о копировании из данных обратного вызова путем вызова FltGetCopyInformationFromCallbackData.