Какой тип драйвера устройства Windows может изменить FindFirstFile и FindNextFile? - PullRequest
2 голосов
/ 02 июня 2011

Мне нужно добавить несколько файлов к результатам, возвращаемым FindFirstFile и FindNextFile под окнами.Это возможно драйвером фильтра файловой системы или типом драйверов?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 июня 2011

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

Раскрытие API для всей системы

Выявление перехвата API

0 голосов
/ 06 марта 2013

Как уже указывалось, вы можете использовать драйвер фильтра файловой системы (устаревший или мини-фильтр, основанный на fltmgr). Однако я настоятельно рекомендую против перехвата API для всей системы. Простая причина: если вы делаете это в пользовательском режиме, он не будет действительно общесистемным, и если вы используете SSDT-хук или какой-либо метод горячей установки, вы рискуете стабильностью системы. Альтернативой, хотя и такой же сомнительной, как и перехват всей системы, будет кража точки входа. В этом случае вы используете объект устройства тома (который вас интересует, просто прослушайте уведомления о присоединении или перечислите их при запуске), чтобы найти ответственный за него драйвер и изменить точки входа основных функций в объекте драйвера ( Ильхо уже указал вам правильное направление).

Драйвер фильтра файловой системы - это поддерживаемый метод , который делает именно это.

В последней версии Windows 7 WDK образец под 7600.16385.1\src\filesys\miniFilter\minispy обеспечивает хорошую отправную точку. Самая большая проблема с мини-фильтрами для частного лица заключается в назначении высоты для загрузки водителем. Потому что использование только любой высоты может привести к BSOD - и в случае FSFD вы можете даже рискнуть целостностью своих данных (хотя ядро ​​вмешивается в BSOD, чтобы предотвратить это). Вам нужно только подделать IRP_MN_QUERY_DIRECTORY - это второстепенный контрольный код, который вы ищете, когда обрабатываете IRP_MJ_DIRECTORY_CONTROL главный контрольный код. Все остальные, через которые вы можете пройти, если вам не нужно разрешать открывать, читать или записывать файл и тому подобное. Как это сделать, видно из примера источника 7600.16385.1\src\filesys\miniFilter\passThrough.

...