Всем доброго! У меня вопрос следующего характера. В чем принципиальное различие таких известных драйвер фильтров файловой системы, Filemon и FileSpy? Если только по способу подключения к устройствам файловой системы, то почему так много негативного говориться о Filemon. Хотелось бы услышать ваши замечания по данной теме. Потому как в данный момент не знаю какой метод принять за основу изучения и написания драйвер фильтра. Заранее всем спасибо!
Насколько я смутно помню, Filemon открывает девайсы томов через ZwCreateFile, потом CreateDevice/AttachDevice. А FileSpy регистрирует колбэк у файловой системы, в колбэке тоже CreateDevice/AttachDevice. Насколько эта разница принципиальна мне трудно сказать, т.к. я не спец по ФС, но способ FileSpy'я, IMHO, более правильный. В Filemon'e/Regmon'e мне лично очень не нравится способ формирования лога в драйвере - форматируется строка. А что такого плохого говорят про Filemon? Я бы не опирался на FileMon, во всяком случае на версию v4.34, исходники которой были последними.
Four-F, многие на разных форумах ругают Filemon, никто конкретно не пишет причин, но все своидиться к кривизне метода. Лично для меня, Filemon оказался более простым в понимании, потрать пару часов, я на его основе написал скилет фильтра(просто перехват IRP). А вот с FileSpy, я уже мудехаюсь довольно долго, а так и не удалось создать что-то такое легкое как filemon. Для меня самым главным моментом является, то на сколько реальна информация filemon, быть может он не все фильтрует и в этом заключается его основная кривость(это не мое суждение)?
Four-F, кстати вопроос по твоим исходникам. "Драйверы режима ядра: Часть 16 : Драйвер-фильтр (не PnP)" ты перехватываешь IRP клавиатуры, на сколько я понимаю этот метод универсален(или я как всегда ошибаюсь), можно ли его использовать для создания драйвер фильтра файловой системы?
Универсален в том смысле, что драйвер-фильтр садится в стек и через него проходят IRP. Это в любом стеке так. Самое страшное в деталях. Например, для фильтров фс геморрой с именами файлов. Драйверы фс одни из самых сложных. Соответственно для написания фильтра нужно много чего знать и найти здесь простой путь не получится. Мой фильтр самый простой. Но принцип один. Так что придется тебе таки разобраться с FileSpy, а заодно и с Sfilter
Four-F, обрадовал . Кстати я что-то подобное уже сделал(используюя твой метод), правда на данный момент перехватываю только редкие пакеты непосредственно посылаемые процессом System и приложениями которые запускаются в данный момент, запросы же файловой системы в мой фильтр сейчас не приходят. Такое было уже у меня когда я разберался с Filemon, там после определения NTFS drive через IoQueryVolumeInformation, в мой фильтр посыпалась вся требуемая информация о файловой структуре. В fileSpy это реализованно как-то иначе, пока я не понял как именно.