Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 09:33
Автор: NeuronViking Статус: Незарегистрированный пользователь
|
Перехватываю вызовы NtCreateFile и при необходимости блокирую их. Если вызовы локальные(т.е. приложение и файл на той же машине) то все ок, но если скажем расшарена папка и удаленный клиент открывает файл то несмотря на болкировку вызова NtCreateFile - файл открывается. В этом случае NtCreateFile вызывается, я вижу что за файл и что его пытается открыть удаленный клиент, я просто возвращаю управление из функции !не! вызывая оригинальную NtCreateFile, НО! пользователь серавно может открыть этот файл! Че за нафиг? Локально все замечательно работает, а вот с удаленными клиентами что-то непонятное творится.
Неужели для открытия используются какие-то другие функции?!
|
|
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 10:17
Автор: cb <cb> Статус: Member
|
могу предположить что т.к. файл открывается редиректором то он использует не вызов Zw/NtCreateFile а посылку соответствующего IRP нужному устройству, или вызывает IoCreateFile.
cb.
|
| |
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 13:52
Автор: NeuronViking Статус: Незарегистрированный пользователь
|
> могу предположить что т.к. файл открывается редиректором то > он использует не вызов Zw/NtCreateFile а посылку > соответствующего IRP нужному устройству, или вызывает > IoCreateFile. > > cb.
Есть у меня предположение что система при получении сетевого запроса на открытие/чтение файла от редиректора клиента не использует "по назначению" Zw/NtCreateFile(тогда нафиг их вообще использовать), а использет связку TDI(сервера) -> FSD(сервера) судя по протоколу CIFS. Т.е. при получении сетевого запроса от клиента транспорт TDI напрямую вызывает функции FSD(и соответственно не использует Zw/NtCreateFile). Либо другая возможность - TDI использует ИРПы, имхо это маловероятно.
Единственная непонятность - нафига при этом система использует вызовы Zw/NtCreateFile ?!!
Наверное я что-то где-то упустил.... все это весьма странно :(
Забыл еще добавить, что та же самая петрушка происходить при вызове Zw/NtReadFile, Zw/NtWriteFile ....
|
| | |
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 16:42
Автор: cb <cb> Статус: Member
|
> Есть у меня предположение что система при получении > сетевого запроса на открытие/чтение файла от редиректора > клиента .... использет связку > TDI(сервера) -> FSD(сервера) судя по протоколу CIFS. > Т.е. при получении сетевого запроса от клиента транспорт > TDI напрямую вызывает функции FSD(и соответственно не > использует Zw/NtCreateFile).
Это маловероятно, т.к. если бы это было так то filemon загруженный после старта tdi & FS drivers не перехватывал бы IRP на открытие файла. А filemon их прекрасно ловит (проверил пару часов назад)
>Либо другая возможность - TDI
> использует ИРПы, имхо это маловероятно.
вот это как раз наиболее вероятно...
> Единственная непонятность - нафига при этом система > использует вызовы Zw/NtCreateFile ?!!
что значит использует? тебе приходит вызов Zw/NtCreateFile с тем именем файла который пытаешься закрыть?
> Забыл еще добавить, что та же самая петрушка происходить > при вызове Zw/NtReadFile, Zw/NtWriteFile ....
странно все это... однако факт остается фактом - при перехвате доступа к FS через IoAttachDeviceToDeviceStack/IoAttachDevice или путем подмены обработчиков в DRIVER_OBJECT ты можешь контролировать все запросы.... (у меня это работает)
cb.
|
| | | |
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 17:02
Автор: NeuronViking Статус: Незарегистрированный пользователь
|
> > Т.е. при получении сетевого запроса от клиента > транспорт > > TDI напрямую вызывает функции FSD(и соответственно не > > использует Zw/NtCreateFile). > > Это маловероятно, т.к. если бы это было так то filemon > загруженный после старта tdi & FS drivers не перехватывал > бы IRP на открытие файла. А filemon их прекрасно ловит > (проверил пару часов назад)
Да, filemon перехватывает ИРПы, согласен.
> >Либо другая возможность - TDI > > использует ИРПы, имхо это маловероятно. > > вот это как раз наиболее вероятно... Я уже начинаю в это верить...
> > Единственная непонятность - нафига при этом система > > использует вызовы Zw/NtCreateFile ?!! > > что значит использует? тебе приходит вызов Zw/NtCreateFile > с тем именем файла который пытаешься закрыть? Да, мне прриходят эти вызовы когда удаленный клиент открывает файл.
Я их глушу(не вызываю оригинальную функцию), но тем не менее файл клиентом серавно открывается. То же самое для функций чтения/записи.
> странно все это... однако факт остается фактом - при > перехвате доступа к FS через > IoAttachDeviceToDeviceStack/IoAttachDevice или путем > подмены обработчиков в DRIVER_OBJECT ты можешь > контролировать все запросы.... (у меня это работает)
так и будет работать ибо ниже ИРПов ничего нету ;) ... просто не хочется мне с ними трахаться... а видно все таки придется :(
|
|
|