Member 13809184 Ответов: 1

Мини-фильтр не блокирует изображения, открытые "windows photos"


Я закодировал мини-фильтр, который блокирует все изображения JPG с относительным успехом. За исключением тех случаев, когда файл открывается с помощью "Windows Photos". Мини-фильтр зарегистрирован для всех MJ_CREATE, и в WinDbg я вижу, как мой код вызывается для блокировки JPG-изображений при открытии Windows Photos. Однако изображение по-прежнему успешно загружается.

тестовая среда:

Изображения копируются перед загрузкой фильтра. Фильтр устанавливается, после чего система перезагружается.

Проблема:

Изображения все еще могут быть доступны с помощью Windows Photos после перезагрузки системы. (Фильтр загружается при запуске, поэтому технически изображения должны быть заблокированы после перезагрузки).

Все остальные операции успешно блокируются, например (копирование,вставка, Открытие с помощью другой программы, такой как paint). Любые новые JPG-изображения, пытающиеся быть открытыми или перенесенными после загрузки, также успешно блокируются.

Что я уже пробовал:

PostOperatonCallback:

if (RtlCompareUnicodeString(&fileDetails->Extension, &jpgExt, TRUE) == 0)
{

    DbgPrint("Blocking JPG file...\n");
    FltCancelFileOpen(FltObjects->Instance, FltObjects->FileObject);

    Data->IoStatus.Status = STATUS_ACCESS_DENIED;
    Data->IoStatus.Information = 0;

    FltReleaseFileNameInformation(fileDetails);

    return FLT_POSTOP_FINISHED_PROCESSING;
}


Параметры запуска фильтра:

StartType = 0
Class = "ActivityMonitor"
Altitude= "370030"


Интересно, что я упускаю? Загружаются ли некоторые изображения так рано, что они обходят FilterManager? Есть ли IRP, который я, возможно, упускаю? Моя конечная цель на данный момент-просто заблокировать загрузку всех JPG-файлов (если это возможно, включая миниатюру).

Огромное спасибо всем, кто нашел время прочитать мой вопрос, и всем, кто может помочь.

Овации,

Брайс Вудс

1 Ответов

Рейтинг:
6

Jochen Arndt

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


Member 13809184

Эй, большое спасибо за ваш ответ, очень ценю его. У вас есть какие-нибудь идеи о том, как я могу поймать IRP, когда он загружается в кэш? Я бы предположил, что есть какой-то ввод-вывод, когда изображение загружается в кэш? Я думаю, что это может произойти до того, как мой фильтр загрузится, однако изменение группы порядка загрузки и высоты не имеет большого значения. Еще раз большое спасибо.

Jochen Arndt

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

Member 13809184

Эй, Йохен, большое спасибо за твои ответы. Оказывается, Windows 10 кэширует изображения и хранит их в файлах .db, а не в обычных файлах изображений. После того, как я заблокировал файлы .db, моя проблема была решена. Еще раз спасибо за вашу помощь.

Jochen Arndt

Спасибо Вам за ваши отзывы и принятие моего ответа.

Однако я надеюсь, что вы не получите нежелательных побочных эффектов, блокируя файл системной базы данных (или даже любой файл с расширением .db?).

Member 13809184

Спасибо за вашу заботу, я специально заблокировал файлы БД, поступающие из C:\
Пользователи\%Имя пользователя%\папка AppData\местные\Майкрософт\Windows в\Explorer, чтобы попробовать и минимизировать побочные эффекты. Остальное будет решаться путем тестирования. Спасибо еще раз.