Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Драйвер - фильтр, нужна консультация!!!!  (Прочитано 5720 раз)
0 Пользователей и 1 Гость смотрят эту тему.
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) этого будет достаточно, если нет то какого алгоритма стоит придерживаться?
Есть еще вопросы, но эти пока самые актуальные.
Заранее, всем спасибо!

« Последнее редактирование: 16-12-2007 18:47 от Алексей1153++ » Записан
LuckyDevil
Гость
« Ответ #1 : 23-09-2005 08:02 » 

Мдя...
Тишина, а хотелось бы услышать дельные советы. Жаль
Записан
ILIS
Гость
« Ответ #2 : 08-11-2005 09:55 » 

LuckyDevil, Чтобы перехватывать операции файловой системы нужно приаттачить DeviceObject своего драйвера к некоторым существующим устройствам винды. Потом, если ты например хочешь перехватывать операцию чтения из файла - нужно на IRP_MJ_READ навесить CompletionRoutine и в ней по состоянию поля IO_STATUS_BLOCK вносить свои изменения. Посмотри пример SFilter из DDK
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines