информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetSpanning Tree Protocol: недокументированное применениеСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ну примеры дело решаемое 13.02.06 12:12  Число просмотров: 2297
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
вот например хороший пример: http://citkit.ru/package/winext2fsd/
<programming>
[Win32] Вопрос по имплементации Network Redirector'а. 08.02.06 07:36   [HandleX]
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 08.02.06 09:31  Количество правок: 6
<"чистая" ссылка>
Изучал "Basic Architecture of a Network Redirector" в MSDN. Там говорится, что сей чудный компонент состоит из драйвера ядра, который взаимодействует с Object Manager, Cache Manager, Memory Manager, I/O System, и проч., для обмена информацией по сетевым интерфейсам и эффективной работы, и из DLL третьего кольца, которая взаимодействует с пользовательскими программами и с драйвером ядра.

Вопросы:
1) Возможно ли использование только систем 3-го кольца? Предположим, DLL и обычная служба, поскольку в моём случае нет экзотики типа инопланетных сетевых интерфейсов и вражеских протоколов :)
2) Обязательно ли курить IFSK — "Basic Architecture of a Network Redirector" находится в разделе MSDN "Installable File System Kit: Windows Driver Kit". Может есть источники попроще, а может быть даже на русском языке?

А может я вообще не туда подался? У M$ есть ещё понятие "Remote File Systems", может мне именно это и надо? Только что-то очень мало инфы по этому вопросу, похоже это именно то, что мне надо, только где бы почитать? :-)

Основная задача: эмулировать программам третьих разработчиков некий сетевой диск или UNC-шару, которая будет давать возможность работать с неким странным хранилищем... недоступным для программ обычным путём.

Заранее всем огромное спасибо за ответы.
Драйвер, который занимается собственно обработкой запросов... 08.02.06 12:36  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Изучал "Basic Architecture of a Network Redirector" в MSDN.
> Там говорится, что сей чудный компонент состоит из драйвера
> ядра, который взаимодействует с Object Manager, Cache
> Manager, Memory Manager, I/O System, и проч., для обмена
> информацией по сетевым интерфейсам и эффективной работы, и
> из DLL третьего кольца, которая взаимодействует с
> пользовательскими программами и с драйвером ядра.

Драйвер, который занимается собственно обработкой запросов на чтение/запись/получение списка файлов и пр.. и dll-ка, которая добавляет в explorer-овское сетевое окружение нужный пункт.

> Вопросы:
> 1) Возможно ли использование только систем 3-го кольца?
> Предположим, DLL и обычная служба, поскольку в моём случае
> нет экзотики типа инопланетных сетевых интерфейсов и
> вражеских протоколов :)

Нет. Файловые системы и сетевые редиректоры это драйверы нулевого кольца.

> 2) Обязательно ли курить IFSK — "Basic Architecture of a
> Network Redirector" находится в разделе MSDN "Installable
> File System Kit: Windows Driver Kit". Может есть источники
> попроще, а может быть даже на русском языке?

Ух ты. Классный у тебя MSDN, у меня DDK Help включен, а IFSDK Help - нет. Приходится пользоваться chm-ами из самого ifskit-а. Что же до вопроса, то да, курить IFSK обязательно (ибо именно installable filesystem тебе и нужен), а вот в каком виде (на русском или нет) ты его будешь курить - совершенно не важно, главное, чтоб правильно скурил. С другой стороны, я нигде не видел переводов DDK Help и IFSKit Help на русский. Да они не особо и нужны

> А может я вообще не туда подался? У M$ есть ещё понятие
> "Remote File Systems", может мне именно это и надо? Только
> что-то очень мало инфы по этому вопросу, похоже это именно
> то, что мне надо, только где бы почитать? :-)

Это все равно IFS-драйвер и читать только в ifs-овском хелпе :-)

> Основная задача: эмулировать программам третьих
> разработчиков некий сетевой диск или UNC-шару, которая
> будет давать возможность работать с неким странным
> хранилищем... недоступным для программ обычным путём.

В самом простом виде у тебя будет драйвер, который обрабатывает IRP_MJ_CREATE (для открытия файлов), IRP_MJ_CLOSE (для закрытия), IRP_MJ_DIRECTORY_CONTROL (для получения списка файлов в каталоге), IRP_MJ_QUERY_INFORMATION (для получения всякой инфы о файлах - даты/размер/является ли каталогом и т.д.)

После чего заводишь в \??\ какой нить симлинк (например \??\MyStore) и направляешь его в \Device\MyStore. Все попытки открыть MyStore\bla-bla-bla будут преобразовываться в открытие \??\MyStore\bla-bla-bla и по симлинку переходить в \Device\MyStore\bla-bla-bla. После этого когда Object Manager (функция nt!ObpLookupObjectName) наткнется на созданный в директории объетов объект \Device\MyStore она вызовет parse процедуру, связанную с типом этого объекта (в нашем случае - IopParseDevice) и передаст туда в числе прочего остаток имени (bla-bla-bla). Эта процедура подготовит IRP_MJ_CREATE и вызовет диспетчер драйвера, который создал твое устройство. Дальше все просто: файловый объект будет доступен как в текущем stack location-е (поле FileName), так и в Irp->Tail.Overlay.OriginalFileObject, а остаток имени после устройства будет лежать в FileObject->FileName. На основании этого имени можешь открывать свой файл. Контекст, связанный с данным конкретным файловым объектом можешь засунуть в FileObject->FsContext (собственно для этого данное поле и предназначено), только в начало своей структуры засунь FSRTL_COMMON_FCB_HEADER (это требование IFSK, чтобы все FsContext-ы были наследниками этой структуры :-) )

> Заранее всем огромное спасибо за ответы.

ЗЫ: А, да, вспомнил способ сделать все, не выходя из третьего кольца - внедрение по Jeffrey Richter-у и перхват всех этих NtCreateFile, NtQueryInformationFile, NtQueryDirectoryFile и пр. и подставление на лету своих данных. Этот способ окажется гораздо сложнее и корявее, чем если сделать все правильно - то бишь в драйвере.
Выручайте с IFSK — насколько он большой, где можно скачать. STFW что-то не помогло. 11.02.06 19:15  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
> Ух ты. Классный у тебя MSDN, у меня DDK Help включен, а
> IFSDK Help - нет. Приходится пользоваться chm-ами из самого
> ifskit-а.

Самое смешное, что инфу, что я привёл в предыдущих постах, я тупо нашёл в поиске на сайте MSDN, самого IFSK у меня нет. Поэтому subj.

В общем, на багтреке объявляется конкурс на самый лучший IFSK ;-)

Заранее всем огромное спасибо!
Как уже сказали, официальный IFS DDK можно слить из осла 13.02.06 12:40  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Примеры (как тут подсказывают из зала) - есть куча (я видел как минимум 3) Open Source IFS-ов той же ext2.

Хедеры, как по мне, лучше слить из MinGW (http://prdownloads.sf.net/mingw/w32api-3.6-src.tar.gz?download) или если есть уже слитый reactos, то выдрать (эти же) хедеры оттуда reactos/w32api/include/ddk/ntifs.h

Либы там не отличаются от DDK-шных.

Ну а хелп, если очень понадобится, можно и выслать (около метра)
Help это описание по всем используемым структурам/функциям IFSK? Если да, то замыль, pls, на alex_wh(coбakа)mail.ru. Спасибо. 13.02.06 13:58  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 13.02.06 13:59  Количество правок: 1
<"чистая" ссылка>
Тяни с вебфайла 13.02.06 14:21  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
http://webfile.ru/809546
Скачал, спасибо огромное! 16.02.06 07:02  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
220 Mб 11.02.06 23:23  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
220 Mб

ed2k://|file|ifs-ddk-2003.nrg|219232428|710BC1866B4513DA218C75C0816D9894|h=KS7STUK2DPAHUB5U5A5BATJ6CTJORQKX
Вообщето он вроде как платный 11.02.06 21:26  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Но есть вот такая вот очень полезная штука: http://www.acc.umu.se/~bosse/ntifs.h
Там нет хелпов 13.02.06 12:03  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Но есть вот такая вот очень полезная штука:
> http://www.acc.umu.se/~bosse/ntifs.h

Даже таких неполных как в самом ifs-е, и тем более нет примеров (а зачастую они оказываются полезнее хелпа).
Ну примеры дело решаемое 13.02.06 12:12  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
вот например хороший пример: http://citkit.ru/package/winext2fsd/
Если что могу помочь сырцами dll'ки FtpDrive... 08.02.06 12:56  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 08.02.06 13:09  Количество правок: 2
<"чистая" ссылка>
> ЗЫ: А, да, вспомнил способ сделать все, не выходя из
> третьего кольца - внедрение по Jeffrey Richter-у и перхват
> всех этих NtCreateFile, NtQueryInformationFile,
> NtQueryDirectoryFile и пр. и подставление на лету своих
> данных. Этот способ окажется гораздо сложнее и корявее, чем
> если сделать все правильно - то бишь в драйвере.
Если что могу помочь сырцами dll'ки FtpDrive (http://www.killprog.com/fdrvr.html) с этим способом :). Но заимплемечено только чтение.
С таким способом есть одна большая засада: отображаемые в память файлы. Если твои апикухи ими не пользуются -все ок. Если пользуются, и для записи наверно проще всетаки написать нормальный драйвер. Я лично эмулировал отображаемые файлы в userspace на основе VirtualAlloc/PAGE_GUARD/AddVectoredExceptionHandler.
Спасибо всем за инфу, попробую всё-таки драйвер наваять... 09.02.06 07:02  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach