LuckyDevil
Гость
|
|
« : 22-09-2005 07:14 » |
|
Всем доброго! Хотелось бы сразу же всех поставить в известность, в драйверах я мало что понимаю особо в драйвер-фильтрах, но имею жгучее желание разобраться с этим. Все началось с обычных кручков в юзер моде, в процессе использования разных методов выявилось куча недостатков каждого метода и в частности инструмента, который использовал и использую сейчас, это дельфи. В в общем исследования этой темы привело меня к драйверам, да еще к самой мало-рассмотриваемой теме, драйвер-фильтры файловой системы. Пообщавшись на разных форумах с умные людьми, выбрал направление, порыскав в инете нашел исходники FileMon'a и FileSpy из ДДК. Обычный перехват IRP пакетов, но так как изначально основной целью я ставил хак определеных данных, а полного представления я еще не имею, то возникли попутные вопросы, на примере программы notepad.exe: 1) это программа для открытия файла использует метод отображения образа файла в пэдж-файл. при таком способе отрытия файла, такой пакет как IRP_MJ_READ и функция FastIORead не срабатывают. все что мне удается выловить так это IRP_MJ_CREATE,IRP_MJ_QUERY_INFORMATION,IRP_MJ_CLOSE и функция FastIoQueryStandardInfo, в данный момент я обрабатываю только 3 FastIOR\W и FastIoQueryStandardInfo, какие еще Fast-функции я должен отслеживать и где правильно перехватывать буфер данных? 2) если я получаю требуемые данные и делаю какие либо операции, в следствии чего размер буфер данных изменяется, как правильно мне информировать систему об этом, Irp->IoStatus.Information = sizeof(buffer) этого будет достаточно, если нет то какого алгоритма стоит придерживаться? Есть еще вопросы, но эти пока самые актуальные. Заранее, всем спасибо!
|