информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаСтрашный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Спасибо всем за инфу, попробую всё-таки драйвер наваять... 09.02.06 07:02  Число просмотров: 2271
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
<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-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach