Как спрятать файл на диске
От: Kerrigan  
Дата: 06.10.06 06:42
Оценка:
Здравствуйте уважаемые гуру низкоуровневого системного программирования под Windows !

У меня к вам 'чайниковский' вопрос по теме написания драйверов, работающих с файловой системой. Мне нужно сделать программу которая выборочно прятала бы от юзера файлы с заданным администратором расширением. Как я понял есть 2 пути, хук и фильтр, причем хук проще в написании и работает на всех существующих в настоящее время ОС из NT серии. Большая просьба ткните, пожалуйста, в несложный сишный исходник с драйвером. Необходимо видеть перед собой работающий пример чтобы идти дальше. Потому что вопросы возникают постоянно, напр какие IRP нужно обрабатывать. Или какое имя файлового девайса нужно указать 2-м параметром при вызове RtlInitUnicodeString. Для работы с сетью это L"\\Device\\Tcp", а для перехвата IRP файловых операций ? Возможно вопросы покажутся глупыми, но в драйверах я пока ламер.
Re: Как спрятать файл на диске
От: MortizW  
Дата: 06.10.06 11:46
Оценка:
Здравствуйте, Kerrigan, Вы писали:

K>Здравствуйте уважаемые гуру низкоуровневого системного программирования под Windows !


K>У меня к вам 'чайниковский' вопрос по теме написания драйверов, работающих с файловой системой. Мне нужно сделать программу которая выборочно прятала бы от юзера файлы с заданным администратором расширением. Как я понял есть 2 пути, хук и фильтр, причем хук проще в написании и работает на всех существующих в настоящее время ОС из NT серии. Большая просьба ткните, пожалуйста, в несложный сишный исходник с драйвером. Необходимо видеть перед собой работающий пример чтобы идти дальше. Потому что вопросы возникают постоянно, напр какие IRP нужно обрабатывать. Или какое имя файлового девайса нужно указать 2-м параметром при вызове RtlInitUnicodeString. Для работы с сетью это L"\\Device\\Tcp", а для перехвата IRP файловых операций ? Возможно вопросы покажутся глупыми, но в драйверах я пока ламер.



Поставь winddk, там есть куча примеров драйверов + очень неплохая вводная документация. какжется что-то про IRP там было.
Re[2]: Как спрятать файл на диске
От: Alexander_kas  
Дата: 06.10.06 12:13
Оценка:
Здравствуйте, MortizW, Вы писали:

MW>Здравствуйте, Kerrigan, Вы писали:


K>>Здравствуйте уважаемые гуру низкоуровневого системного программирования под Windows !


K>>У меня к вам 'чайниковский' вопрос по теме написания драйверов, работающих с файловой системой. Мне нужно сделать программу которая выборочно прятала бы от юзера файлы с заданным администратором расширением. Как я понял есть 2 пути, хук и фильтр, причем хук проще в написании и работает на всех существующих в настоящее время ОС из NT серии. Большая просьба ткните, пожалуйста, в несложный сишный исходник с драйвером. Необходимо видеть перед собой работающий пример чтобы идти дальше. Потому что вопросы возникают постоянно, напр какие IRP нужно обрабатывать. Или какое имя файлового девайса нужно указать 2-м параметром при вызове RtlInitUnicodeString. Для работы с сетью это L"\\Device\\Tcp", а для перехвата IRP файловых операций ? Возможно вопросы покажутся глупыми, но в драйверах я пока ламер.


По поводу самого процеса как спрятать пока не скажу, а получить имя девайса можно так:

Во первых взять исходники программы filemonitor там это реализовано. Проблема в том что устройство файловой системы не имеет имени и просто указать его в функции AttachDevice... не получится
Re: Как спрятать файл на диске
От: Аноним  
Дата: 09.10.06 15:19
Оценка:
Здравствуйте, Kerrigan, Вы писали:

K>Здравствуйте уважаемые гуру низкоуровневого системного программирования под Windows !


K>У меня к вам 'чайниковский' вопрос по теме написания драйверов, работающих с файловой системой. Мне нужно сделать программу которая выборочно прятала бы от юзера файлы с заданным администратором расширением. Как я понял есть 2 пути, хук и фильтр, причем хук проще в написании и работает на всех существующих в настоящее время ОС из NT серии. Большая просьба ткните, пожалуйста, в несложный сишный исходник с драйвером. Необходимо видеть перед собой работающий пример чтобы идти дальше. Потому что вопросы возникают постоянно, напр какие IRP нужно обрабатывать. Или какое имя файлового девайса нужно указать 2-м параметром при вызове RtlInitUnicodeString. Для работы с сетью это L"\\Device\\Tcp", а для перехвата IRP файловых операций ? Возможно вопросы покажутся глупыми, но в драйверах я пока ламер.


Хук на ZwQueryDirectoryFile не подойдет ? К этой функции FindFirstFile, FindNextFile в конечном итоге обращаются.
Re[2]: Как спрятать файл на диске
От: Аноним  
Дата: 10.10.06 03:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Хук на ZwQueryDirectoryFile не подойдет ? К этой функции FindFirstFile, FindNextFile в конечном итоге обращаются.


Хотелось бы уточнить: не к ZwQueryDirectoryFile, а к NtQueryDirectoryFile.
Zw* — это переходники в режиме ядра, так что хук на Nt* будет как минимум быстрее.
Re[3]: Как спрятать файл на диске
От: Alexander_kas  
Дата: 01.11.06 07:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Хук на ZwQueryDirectoryFile не подойдет ? К этой функции FindFirstFile, FindNextFile в конечном итоге обращаются.


А>Хотелось бы уточнить: не к ZwQueryDirectoryFile, а к NtQueryDirectoryFile.

А>Zw* — это переходники в режиме ядра, так что хук на Nt* будет как минимум быстрее

А может кто нибудь объяснить откуда появилась функция .ZwQueryDirectoryFile? У меня стоит DDK для XP SP1 ну нет там такой функции в документации не описана она. Однако и здесь и в ряде исходников программ видел как она что она используется и даже перехватывается
Re[4]: Как спрятать файл на диске
От: Злость Россия  
Дата: 01.11.06 07:46
Оценка:
Здравствуйте, Alexander_kas, Вы писали:

[skip]

А>>Хотелось бы уточнить: не к ZwQueryDirectoryFile, а к NtQueryDirectoryFile.

А>>Zw* — это переходники в режиме ядра, так что хук на Nt* будет как минимум быстрее

A_>А может кто нибудь объяснить откуда появилась функция .ZwQueryDirectoryFile? У меня стоит DDK для XP SP1 ну нет там такой функции в документации не описана она. Однако и здесь и в ряде исходников программ видел как она что она используется и даже перехватывается


здесь
Пусто
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[5]: Как спрятать файл на диске
От: Alexander_kas  
Дата: 01.11.06 08:02
Оценка:
Здравствуйте, Злость, Вы писали:

A_>>А может кто нибудь объяснить откуда появилась функция .ZwQueryDirectoryFile? У меня стоит DDK для XP SP1 ну нет там такой функции в документации не описана она. Однако и здесь и в ряде исходников программ видел как она что она используется и даже перехватывается


З>здесь


Большое спасибо, а отсутствие описания функции в DDK это эффект кривой установки или так и должно быть?
Re[6]: Как спрятать файл на диске
От: Аноним  
Дата: 03.11.06 00:44
Оценка:
Здравствуйте, Alexander_kas, Вы писали:

A_>отсутствие описания функции в DDK это эффект кривой установки или так и должно быть?


Так и должно быть. У Микрасофта проблемы с документированием . Хуки на Nt*-вызовы лучше делать через SDT, т.к. просто получить адрес многих таких вызовов путём импорта из ядра не получится.
Чтобы спрятать файл на диске - ХУКИ НЕ НУЖНЫ
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 03.11.06 01:41
Оценка:
A_>>отсутствие описания функции в DDK это эффект кривой установки или так и должно быть?
А>Так и должно быть. У Микрасофта проблемы с документированием . Хуки на Nt*-вызовы лучше делать через SDT, т.к. просто получить адрес многих таких вызовов путём импорта из ядра не получится.
ага, особенно эффективно это все на получится 64-битах

по теме же лишь скажу что

1) за всем не углядишь. и недостающие описания в DDK\MSDN прототипов ф-ий-экспортов ОС вполне можно заводить самому если четко понимаешь что зачем и как а главное что без этого стандартными документированными методами никак. да и символы к ОС WinDbg давно и прекрасно показывает — бывает полезно.

2) и главное. чтобы прятать файлы — хуки — противопоказаны. поиском сходу можно найти куски кода это делающего в фильтрах
Автор: SAnatoly
Дата: 26.05.06
— несколько раз уже тема поднималась и народ делился сакральным знанием, дальше искать сейчас нет времени — потрудитесь сами? для старта можно также поискать по слову IRP_MN_QUERY_DIRECTORY
Автор: Valerio
Дата: 08.10.03


PS в очередной раз поражаюсь настырности с которой народ насилует многострадальную SDT. Нет, не зря MSFT решил остановить беспредел

PPS простенький но правильный фильтр для прячи файла будет прекрасно работать на всех ОС начиная с НТ4 и быть бинарно совместимым, где тут преймущество у хуков? для данной задачи фильтры побьют хуки
Автор: Valery A. Boronin
Дата: 16.08.06
в одну калитку. это к вопросу автора ветки если вернуться. все что нужно для старта есть в <DDK>\src\filesys\filter из IFS Kit и на это форуме.
... << RSDN@Home 1.2.0 alpha rev. 653>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.