Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слежение за записью на внешие носители, USB flash 
:(
    Опции темы
Goganchic
Дата 6.7.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Всем привет!
Как известно в винде имеется достаточно серьзеная вирусная опасность, и не всегда антивирусы могут защитить (например вирус оч. новый и сигнатуры для него еще не вышли). Вот я решил сделать на уровне системы некоторую защиту (ну и попутно разобраться в системном программировании для винды). В первую очередь это касается логирования доступа всех программ к внешним носителям, таким как USB Flash. Я думаю, что это можно как-то сделать на уровне драйверов. Хотелось бы получить следующий результат: каждая операция чтения и записи должна логироваться в какой-нибудь файл, к примеру C:\Windows\usb-access.log. А записываться туда должна следующая информация: какая программа в какой момент и что пыталась сделать: записать такой-то файл на носитель или считать такой-то файл с носителя.
Кто-нибудь знает что-нибудь по данной теме?
PM Jabber   Вверх
W4FhLF
Дата 6.7.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Хорошую ты себе задачку для "попутно разобраться в системном программировании для винды" поставил. smile

Цитата(Goganchic @  6.7.2008,  17:36 Найти цитируемый пост)
 Я думаю, что это можно как-то сделать на уровне драйверов. Хотелось бы получить следующий результат: каждая операция чтения и записи должна логироваться в какой-нибудь файл, к примеру C:\Windows\usb-access.log.


Начни с поиска по словосочетаниям:
file system filter driver
драйвер фильтр файловой системы

На один из первых наткнёшься на sfilter, на этом твоё желание скорее всего и угаснет smile


Это сообщение отредактировал(а) W4FhLF - 6.7.2008, 17:48


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Goganchic
Дата 8.7.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



W4FhLF, почему желание угаснет?
PM Jabber   Вверх
Goganchic
Дата 19.8.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Поискал инфу на эту тему, понял что надо использовать IFS Kit. Теперь у меня несколько вопросов, на которые я так и не смог найти ответов:
  • Как заказать IFS Kit? Позволяет ли мне лицения потом продавать написанное мной творение? Не буду ли я нарушать этим чьи-то авторские права?
  • С какого момента IFS Kit является частью WDK? Для Win 2000, WinXP и Win Vista драйвера будут абсолютно несовместимы?
  • Что кроме IFS Kit мне нужно для разработки драйвера-фильтра файловой системы для Windows?

PM Jabber   Вверх
Goganchic
Дата 1.9.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Исследую сейчас IFS Kit (входящий в WDK) И у меня есть несколько вопросов: смотрел код sfilter-а, следующий блок:
Код

    fastIoDispatch = ExAllocatePoolWithTag( NonPagedPool,
                                            sizeof( FAST_IO_DISPATCH ),
                                            SFLT_POOL_TAG_FASTIO );
    if (!fastIoDispatch) {

        IoDeleteDevice( gSFilterControlDeviceObject );
        return STATUS_INSUFFICIENT_RESOURCES;
    }

    RtlZeroMemory( fastIoDispatch, sizeof( FAST_IO_DISPATCH ) );

    fastIoDispatch->SizeOfFastIoDispatch = sizeof( FAST_IO_DISPATCH );
    fastIoDispatch->FastIoCheckIfPossible = SfFastIoCheckIfPossible;
    fastIoDispatch->FastIoRead = SfFastIoRead;
    fastIoDispatch->FastIoWrite = SfFastIoWrite;
    fastIoDispatch->FastIoQueryBasicInfo = SfFastIoQueryBasicInfo;
    fastIoDispatch->FastIoQueryStandardInfo = SfFastIoQueryStandardInfo;
    fastIoDispatch->FastIoLock = SfFastIoLock;
    fastIoDispatch->FastIoUnlockSingle = SfFastIoUnlockSingle;
    fastIoDispatch->FastIoUnlockAll = SfFastIoUnlockAll;
    fastIoDispatch->FastIoUnlockAllByKey = SfFastIoUnlockAllByKey;
    fastIoDispatch->FastIoDeviceControl = SfFastIoDeviceControl;
    fastIoDispatch->FastIoDetachDevice = SfFastIoDetachDevice;
    fastIoDispatch->FastIoQueryNetworkOpenInfo = SfFastIoQueryNetworkOpenInfo;
    fastIoDispatch->MdlRead = SfFastIoMdlRead;
    fastIoDispatch->MdlReadComplete = SfFastIoMdlReadComplete;
    fastIoDispatch->PrepareMdlWrite = SfFastIoPrepareMdlWrite;
    fastIoDispatch->MdlWriteComplete = SfFastIoMdlWriteComplete;
    fastIoDispatch->FastIoReadCompressed = SfFastIoReadCompressed;
    fastIoDispatch->FastIoWriteCompressed = SfFastIoWriteCompressed;
    fastIoDispatch->MdlReadCompleteCompressed = SfFastIoMdlReadCompleteCompressed;
    fastIoDispatch->MdlWriteCompleteCompressed = SfFastIoMdlWriteCompleteCompressed;
    fastIoDispatch->FastIoQueryOpen = SfFastIoQueryOpen;

    DriverObject->FastIoDispatch = fastIoDispatch;



Как я понимаю, это и есть назначение хуков на перехват обращений к файловой системе, я прав?
PM Jabber   Вверх
Goganchic
Дата 2.9.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Итак, вроде бы это на самом деле так: т.е. это хуки, теперь у меня такой вопрос: как я понимаю, для того, чтобы прибиндить этот список хуков к какому-то девайсу нужно выполнить подобную инструкцию:
Код

DriverObject->FastIoDispatch = fastIoDispatch;

т.е. возникает необходимость получить список всех девайсов, и тут и есть вопрос: как это сделать?
PM Jabber   Вверх
andrew_121
Дата 3.9.2008, 11:33 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Капец. Какие страсти smile  В Linux все гораздо проще smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
ama_kid
Дата 6.9.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



Цитата(Goganchic @  2.9.2008,  19:49 Найти цитируемый пост)
для того, чтобы прибиндить этот список хуков к какому-то девайсу нужно выполнить подобную инструкцию:
Цитата(Goganchic @  2.9.2008,  19:49 Найти цитируемый пост)
т.е. возникает необходимость получить список всех девайсов
Хм... не увидел связи между первой и второй фразами, если честно... Как из первого следует второе? Вообще-то DriverObject - это объект, который ты получаешь в DriverEntry, объект твоего драйвера. А уже для того, чтобы приаттачить свой объект к требуемому драйверу нижнего уровня - имхо нужно использовать функцию типа IoAttachDevice, но только для IFS (к сожалению, не имею IFS'a, поэтому максимум могу дать ссылку на MSDN), выбрав девайс по его имени, которое должно быть известно: типа как  L"\\Device\\RawDisk" или L"\\Device\\RawCdRom" или еще какой хочешь фильтровать, получив по имени его объект с помощью функции IoGetDeviceObjectPointer...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.