Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Как отловить обращение к файлу на диске ?
 
Привет всем!

Кто знает как отловить момент обращения к файлам на диске (операции чтения, записи, чтения/записи атрибутов, доступа и т.п.) и затем запретить/разрешить к нему доступ?

Пишется сервис Windows NT, который в зависимости от определенной логики будет предоставлять доступ к файлам (на чтение, запись, полный доступ, даже на вывод файла в списке папки, т.е FindFirst/FindNext его уже не увидят). Причем методами security windows не годится (пользователи, права),
т.к.
1) доступ к файлам будет осуществляться и по сети с машин с 98 windows
2) доступ может меняться "на лету" в зависимости от различных условий
3) другие причины, долго объяснять

Т.е. задача уже свелась только к такому варианту: отловить обращение к файлам и вернуть программе разрешать или не разрешать чтение, запись и т.п.

Возможные варианты решения:
1. Системными средствами, установить фильтр посредством callback функции, вызывающейся при любом обращении к файлу (но долго копал MSDN и ничего подходящего не нашел)
2. Как то использовать возможности драйвера NTFS. (задачу достаточно решить для ntfs файловой системы, но никогда подобным не занимался и где копать? :( )
3. Писать свой драйвер, который будет отслеживать обращения к диску. (но здесь тоже еще темный лес)

Подскажите, если кто знает,занимался подобным вопросом или хотя бы укажите направление поисков. А может еще где можно спросить?

Спасибо всем!
 
Это спасет отца русской демократии?
 
2offtopic: это его спасет только отчасти. Через FindFirstChangeNotification() прогу уведомляют об изменениях, но не дают ничего делать =)

2Sergey Vorobyev: я вижу следующие пути:
1) http://www.microsoft.com/whdc/ddk/ifskit/default.mspx -- IFS, но это геморно
2) Хук в нужный процесс на функцию NtCreateFile/ZwCreateFile в ntdll.dll. Как делать -- см. на www.sysinternal.com (также обрати внимание на FileMon от них же)

А спросить ещё можно на codeguru.com и rsdn.ru
 
на wasm.ru в вирусологии что-то подобное было
 
Цитата
TSS пишет:
2offtopic: это его спасет только отчасти. Через FindFirstChangeNotification() прогу уведомляют об изменениях, но не дают ничего делать =)
Это точно

Цитата
TSS пишет:

http://www.microsoft.com/whdc/ddk/ifskit/default.mspx -- IFS, но это геморно
Как раз разбираюсь в этом, действительно непросто

Цитата
TSS пишет:

2) Хук в нужный процесс на функцию NtCreateFile/ZwCreateFile в ntdll.dll. Как делать -- см. на www.sysinternal.com (также обрати внимание на FileMon от них же)
А это не совсем понятно, но буду разбираться
 
Утилита перехватывающая операции с файлами лежит тут:
http://www.sysinternals.com/ntw2k/source/filemon.shtml
Там же есть исходники.

Эта утилита использует функцию IFSMGR_InstallFileSystemApiHook() в W95-98-MЕ.
Или подключается в стек IRP, то есть работает как фильтр файловой системы в NT-W2K-XP-2003.

Тебе нужно взять исходник драйвера и немножко подправить. Смотришь если идет операция с твоим файлом, то обламываешь ее. Если не с твоим то пропускаешь. Достаточно просто. Всего один if добавить.

Я уже делал это. Добавлю, что если ты справишься с этой задачей, то следующей задачей будет передача информации из Ring0 в Ring3. (Обратно легко - через IOCTL) Правда в filemon это сделано, но тебе этот вариант не подойдет. Вот тут ты попотеешь....

А вообще тебе нужно общаться на эту тему в конференциях типа "драйвера под Windows". Идешь на www.osr.com и смотришь ntdev и ntfsd.
Страницы: 1
Читают тему