![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Доброго времени суток, уважаемые коллеги!
Занимаюсь решением вопроса программного запрета доступа к каталогу. Поделитесь, пожалуйста, идеями о том каким способом этого можно достичь. Назначение прав доступа не подходит. И было бы неплохо узнать как запретить доступ не только из проводника, а и из фара. Заранее благодарен! |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Думаю правильнее всего будет написать драйвер фильтр фс. Фильтровать все IRP_MJ_CREATE и уже смотреть какой каталог открывается и предпринимать действия пропускать дальше или возврашать STATUS_ACCESS_DENIED например.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
RapMan |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.6.2008 Репутация: нет Всего: нет |
думаю bra1ny прав, но добавлю что еще нужно фильтровать IRP_MJ_SET_INFORMATION иначе переименовать и удалить каталог будет можно
--------------------
здесь хреновые модераторы... |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Огромное спасибо за советы!
Порыл в этом направлении, почитал на WASM. Я так понял что драйвера фильтра фс относятся к драйверам режима ядра. Скажи пожалуйста, вообще раеально этот драйвер написать на С, в MS Visual Studiо? или драйвера такого рода пишутся только на asm-e? |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Драйвера уже давно пишут на С (и даже на С++). Тебе нужен DDK или WDK
|
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
А если это реализовать перехватом WinAPI функций, то, допустим из командной строки или при помощи фара, каталог будет доступен?
xvr, благодарю за совет насчет WDK. WDK - мощнейший хелп) Это сообщение отредактировал(а) KAlex1 - 25.10.2009, 22:39 |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Если перехватите ту апишку с помощью которой программа обращается к каталогу , то нет. Но перехват апи не даст вам той "власти" нежели драйвер фильтр фс. Плюс к этому драйвер фильтр это документированный метод +) Это сообщение отредактировал(а) bra1ny - 25.10.2009, 23:53 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Кроме драйверов фильтов файловой системы (file system filter drivers), также существуют драйвера минифильтра
(file system minifilter drivers). ) Я так понял, они проще в реализации, но возможно ли с их помощью запретить доступ к каталогу? Они ведь не предусматривают возврат такого полезного статуса как, например STATUS_ACCESS_DENIED. |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
В чем проблема в реализации драйвера фильтра фс ? Покажите код поможем.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Код...Если бы)
Я сейчас нахожусь на стадии выбора: реализовывать ли драйвер фильтра, или драйвер минифильтра. WDK говорит что минифильтр проще в реализации и лучше работает. Но это ведь драйвер "минифильтра") Вот я и хочу понять какие тут подводные камни, всязи с этим и возник вопрос: предоставит ли мне драйвер минифильтра возможности необходимые для решения моего вопроса? То что драйвер фильтра способен мне помочь это понятно. |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Это сообщение отредактировал(а) Alca - 10.11.2009, 10:23 |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
The CreateFile function creates, opens, or truncates a file, COM port, device, service, or console.
Похоже что с директориями эта функция не работает, и ктому же если ее реализовать в резидентной программе, то эту программу можно будет легко прервать. И как сказал bra1ny: это не даст вам той "власти" нежели драйвер фильтр. Поэтому я всеже буду ждать ответа на мой вопрос о драйверах минифильтра) |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
KAlex1, а в сторону ACL (Access Controll Lists) не смотрел - SetFileSecurity
|
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
только что посмотрел, и понял что я уже далеко зашел в рассмотрении драйверов фильтра, и уже добью наверно их). я так понял, через ACL назначаются привилегий доступа, а это мне не совсем подходит.
Благодарю за подсказку.Хорошая идея. Оставлю ее как запасной вариант) И всеже буду ждать ответа на мой вопрос о драйверах минифильтра) |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
по поводу фильтра фс , советую изучить исходники файлмона(на васме есть). Ну и если решитесь , то по любому столкнетесь с фаст ио.
Вот Вам почитать. Присоединённый файл ( Кол-во скачиваний: 36 ) ![]() --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Благодарю за док) Я думал что в WDK, fast I/O описываются достаточно, но если что обязательно воспользуюсь)
Помоему в моем случае обработку фаст и/о делать не прийдется. Там достаточно будет поймать те IRP о которых говорилось ранее. К тому же к WDK прилогается пример драйвера минифильтра и должен прилогаться пример просто драйвера фильтра, но второго там почему-то нету, поэтому нужно всеголишь поискать в инете) |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
если будите писать драйвер фильтр фс , То фаст ио придется обрабатывать по любому иначе систему нагнете =)
Ну там все просто где-то так:
ну и тд. --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Да, в драйверах фильтра нужно было предусматривать обработчик фаст ио, даже если он ничего не должен делать, но он должен передать фаст ио следующему драйверу в стэке.
А в драйверах минифильтра, обрабатываются только те сообщения которые нам нужны, а для остальных мы можем даже не предусматривать обработчики, все остальное там за нас делает filter manager) |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Ну пока вы там с минифильтрами маетесь , я по быстрому вам скелет написал
![]() Простой драйве фильтр фс , который запрещает доступ к каталогу Temp на диске С. После запуска стэк устройств выглядит где-то так:
![]() ![]() Это сообщение отредактировал(а) bra1ny - 11.11.2009, 13:37 Присоединённый файл ( Кол-во скачиваний: 75 ) ![]() --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Благодарю Вас, bra1ny. Думаю Ваш код будет мне очень полезен)
Буду надеяться, что после окончания ознакомления с документацией, я напишу свой драйвер с такой же скоростью что и Вы этот) |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
А как драйвер установить? |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Полно программ. можете свою написать , через сервисы или NtLoadDriver.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
спасибо
|
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
А Microsoft Visual Studio предоставляет какие-либо возможности, которые могут помочь в разработке драйверов?
|
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Эээ какие возможности вы имеете в виду?Как настроить студию чтобы там драйвера собирать?
http://alter.org.ua/ru/docs/nt_kernel/vc6_proj/ http://alter.org.ua/ru/docs/nt_kernel/vc8_proj/ Еше на диске к книжке Уолтера Они есть мастер для построения проектов драйверов для студии. Сам использую 6 студию + визуал асист , собираю драйвера в build . Уже привык , и менять ничего не собираюсь. Это сообщение отредактировал(а) bra1ny - 13.11.2009, 17:42 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Посоветуйте пожалуйста, что удобнее всего использовать для отладки драйвера фильтра и вообще драйверов?
Bra1ny, в вашем исходнике есть папка objchk_wxp_x86, скажите пожалуйста что это за папка, и как создаются файлы входящие в нее?) И еще, файлы makefile. и sources. создаются вручную? Я так понял, вы имеете ввиду что драйвера лучше компилировать build-oм которые входит в WDK? Вы про этот говорите или про какой-то другой? Для меня это все ново, поэтому приходиться уточнять)) Это сообщение отредактировал(а) KAlex1 - 16.11.2009, 01:09 |
|||
|
||||
bra1ny |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Да , вручную.
Да , это эталонная сборка.
WinDbg. Так как перед тем , как у вас что-то заработает будет очень много синих экранов , советую поставить виртуальную машину. Вот инструкция как настроить виндебаг и вмварю для удаленной отладки. тык --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
||||||
|
|||||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Bra1ny, благодарю за совет насчет vmware и windbg. Настроил, отлаживаю... Настройка не легкая конечно)
Подскажите пожалуйста как посмотреть стэк устройств и есть ли какая-нибудь возможность посмотреть через какие драйвера IRP прошло или какими обрабатывалось и какими не успело обработаться, потому что я в своем драйвере обработку IRP завершаю (complete an I/O operation) со статусом STATUS_ACCESS_DENIED, but никакого эффекта на систему это не оказывает, и в папку всеравно заходит. И скажите еще пожалуйста, какую группу (Load order group) присваивать драйверу? |
|||
|
||||
bra1ny |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
стэк устройств можно посмотреть командой !devstack
Если с отладчиком не очень подружились вроде бы былая такая полезная штука как irptrace поищите.
Давайте код , посмотрим. Это сообщение отредактировал(а) bra1ny - 26.11.2009, 00:12 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
||||
|
|||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Взгляните, пожалуйста.
|
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
FltCancelFileOpen?
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Спасибо за подсказку. В ВДК написано что команда FltCancelFileOpen используется в PostOperationCallBack процедурах. Во всяком случае она мне не пригодилась, ошибка оказалась в сравнении имен каталогов. Это я уже исправил. Разработка продвигается)
![]() Подскажите пожалуйста какую фунцкию использовать для динамического выделения памяти, под массив переменных определенного типа, в режиме ядра. Необходимо динамически выделить память под массив UNICODE_STRING-ов. И затем также выделить память под массив buffer каждой из структур UNICODE_STRING. Это сообщение отредактировал(а) KAlex1 - 30.11.2009, 23:46 |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
ExAllocatePool().
Выбирать тип пула надо в зависимости от irql. Если работаете на уровне < DISPATCH_LEVEL тогда можно paged pool. С nonpaged пулом можно работать на любом irql, но надо помнить что это очень ценный ресурс ![]() --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Благодаря документации и Вам, bra1ny, мне стало ясно что необходимо использовать ExAllocatePoolWithTag.
Но у меня возникла очередная проблема: выделяется всего 4 байта, при том что мне нужно 5120 байт. Из DriverEntry вызываю свою процедуру, и в ней уже происходит вызов ExAllocatePoolWithTag. Вначале подумал что IRQL не тот, попробовал вызвать ExAllocatePoolWithTag их самой DriverEntry, но всеравно выделяются только 4 байта, вместо желаемых 5120. Выделяю из PagedPool. IRQL DriverEntry является PASSIVE_LEVEL. Вот он код:
Буду рад, если у вас есть какие-нибудь идеи по этому поводу) |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
|
|||
|
||||
bra1ny |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Вы совершенно правы.
ExAllocatePool это "обертка" которая в свою очередь вызывает ExAllocatePoolWithTag с тэгом None. Ну это так для справки)) --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
||||||
|
|||||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Я бы спал спокойно если бы мне функция ZwQueryValueKey не возвращала BufferTooSmall, при том что проверку я перед этим тоже делаю)) И дебаггер показывает в buffer не нулевой адрес.
Это сообщение отредактировал(а) KAlex1 - 3.12.2009, 22:47 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
|
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Скажите пожалуйста, драйвера откомпилированные в Windows XP x86 build Enviroment будут работать на Win Xp x64, и на Windows 7?
Я думал что должно быть какое-нибудь Windows XP x64 build Enviroment, но его нету, поэтому драйвера получается будут 32х-битные. |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
на сколько помню можно 2003 x64 использовать , схожие архитектуры. Это сообщение отредактировал(а) bra1ny - 9.12.2009, 23:12 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
А вообще, драйвера откомпилированные в Windows XP x86 build Enviroment будут работать на Win Xp x64, и на Windows 7?
|
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Вообще-то тоскают с собой драйвера для разных платформ. Для x86 отдельно , для x64 отдельно. --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Подскажите пожалуйста как настраивать MVS 2005 для создния user-mode application, которые смогли бы взаимодействовать с kernel-mode драйвером?
|
|||
|
||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
В смысле настраивать? Создаешь приложение, а для работы с драйвером используешь следующие функции:
CreateFile -> IRP_MJ_CREATE CloseHandle -> IRP_MJ_CLEANUP & IRP_MJ_CLOSE WriteFile -> IRP_MJ_WRITE ReadFile-> IRP_MJ_READ DeviceIoControl -> IRP_MJ_DEVICE_CONTROL -------------------- 0x2b|~0x2b |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Всмысле какие папки указывать в настройка, типа Additional library directories, возможно какие-нибудь настройки линковщика. ЧТо-то наподобии http://alter.org.ua/ru/docs/nt_kernel/vc8_proj/ вот этого, если такое вообще есть.
Потому что я пробовал подключить .h файл с нужной мне функцией, указыв на него необходимые пути в настройках проекта, но всеравно при линковании ошибки. |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
не понял что-то на что ругается линковщик? пример хидера пожалуйста.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
А что за ошибки? И если есть возможность - можешь показать h-файл?
-------------------- 0x2b|~0x2b |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
В ддк кстати есть пример как общаться с драйвером.
Это сообщение отредактировал(а) bra1ny - 20.12.2009, 19:05 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
user-mode application не могут напрямую вызывать kernel-mode драйвера, только стандартными, определенными в Win32 API методами (их
smoke_man уже перечислил) Т.ч. ничего специально настраивать не надо |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Для загрузки драйвера минифильтра используется функция FilterLoad (The FilterLoad function dynamically loads a minifilter driver into the system). Объявление содержится в fltuser.h, который входит в WDK. Ее мне и нужно вызывать.
При компиляции выдается ошибка: c:\ddk\inc\ddk\fltuserstructures.h(22) : fatal error C1012: unmatched parenthesis : missing ')'. А ведь fltuserstructures.h является майрософтским файлом. Навсякий случай прикрепляю эти два файла. Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() |
|||
|
||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Посмотри тут.
-------------------- 0x2b|~0x2b |
|||
|
||||
KAlex1 |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Smoke_man, Благодарю за полезную ссылку. оттуда я вынес что нужно в include directories добавить еще C:\WDK\inc\api.
Добавив это, ошибка сменилась на error C3861: 'FilterLoad': identifier not found. Хотя нужный fltuser.h подключен. FilterLoad это функция которую я вызываю. Я предпологаю, что это из-за того что не выполняется условие #if FLT_MGR_BASELINE, после которого в хедере идет объявление FilterLoad. Кусочек кода fltuser.h :
Вот на каких основаниях я пологаю что не выполняется условие #if FLT_MGR_BASELINE: Включив в C/C++ -> Preprocessor -> Generate Processed File - "With Line Numbers (/P)". На этапе компиляции я получаю кучу файлов .i И вставив в свой код вот такую вот проверку:
В .i файле я нахожу вот что:
Заменив проверку на :
В .i файле я такого не нахожу. Что говорит, о том что #if FLT_MGR_BASELINE не выполняется. Причем с включенной опцией C/C++ -> Preprocessor -> Generate Processed File - "With Line Numbers (/P)". Мне выдает ошибку что cannot open file '.\Debug\stdafx.obj'. Т.е. этого файла просто нет. Но это неважно потому что если откулючить эту опцию, то такой ошибки не возникает. Система WINXP SP3. Есть ли у кого-нибудь идеи почему не выполняется #if FLT_MGR_BASELINE? |
||||||||
|
|||||||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
А если добавить:
-------------------- 0x2b|~0x2b |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
К той ошибке что была \usermodeapp1\usermodeapp1dlg.cpp(288) : error C3861: 'FilterLoad': identifier not found
добавляется вот это: warning C4005: 'WINVER' : macro redefinition ...\usermodeapp1\stdafx.h(18) : see previous definition of 'WINVER' ....\usermodeapp1\usermodeapp1dlg.cpp(20) : warning C4005: '_WIN32_WINNT' : macro redefinition ....\usermodeapp1\stdafx.h(22) : see previous definition of '_WIN32_WINNT' ...\usermodeapp1\usermodeapp1dlg.cpp(21) : warning C4005: 'NTDDI_VERSION' : macro redefinition c:\ddk\inc\api\sdkddkver.h(203) : see previous definition of 'NTDDI_VERSION' Это сообщение отредактировал(а) KAlex1 - 22.12.2009, 00:23 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
скомпильте build'ом.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
У меня user-mode приложение содержит окно созданное при помощи классов MFC.
Скомпилит ли build в этом случае? Я себе не совсем представляю как буду выглядеть файлы sources. и makefile. ) Это сообщение отредактировал(а) KAlex1 - 22.12.2009, 01:21 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Проверь как определен NTDDI_VERSION (в \ddk\inc\api\sdkddkver.h)
Он должен быть или NTDDI_VISTA, а для XP должен быть сервис пак не ниже 2 |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
понятно) Я просто ради интереса скомпилил пример scanner из ддк(юзермодную часть) , которая использует FilterLoad(). Посмотрите файл sources к ней. Это сообщение отредактировал(а) bra1ny - 22.12.2009, 14:42 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
А почему бы просто не подгрузить(GetProcAddress) fltlib.dll и Вызвать FilterLoad.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
я думаю, динамически вызывать FilterLoad не пойдет, потому что если бы ее можно было вызывать когда угодно, то в хедере не было бы всяких условий. Попробую скомпилить build-oм.
|
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Я бы так сделал) --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
bra1ny |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
И так можете меня считать извращенцем )) Но я разреверсил FilterLoad и написал свой аналог))
Кратко Говоря вызов FilterLoad сводится к NtDeviceIoControlFile на FltMgr. Посылается структура 2 байта + строка.
Ну вот мой пример(тестил на примере из ддк (scanner) ).
![]() Это сообщение отредактировал(а) bra1ny - 27.12.2009, 03:40 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
А теперь выйдет очередной SP к Винде, или программу запустят на другой Винде, и MAGIC_IOCTL изменится, или _tagLOAD поменяется, и все, приплыли
![]() |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Да это все понятно) Это так чисто интерес в 4 утра) Это сообщение отредактировал(а) bra1ny - 27.12.2009, 14:39 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
bra1ny, интерес как раз для 4х утра))
Если кто желает поиграться драйвером) Пожалуйста. юзер-мод приложение незаконченное немного. Это сообщение отредактировал(а) KAlex1 - 28.12.2009, 15:46 Присоединённый файл ( Кол-во скачиваний: 49 ) ![]() |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
У меня ничего не заработало)))
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Вначеле драйвер устанавливаете при помощи .inf файла. Затем запускате прогу выбираете папки для блокирования.
После того как выбрали. Нажимаете "Заблокировать". После нажимаете "Load". Если изменяете список папок, вначале нажмите "Unload". Потом ""Заблокировать" и потом "Load". |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
а вот в чем фишка) Надо сначала указать папки, а потом load =)
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
Вопрос считаю, на определенном уровне, решенным.
Благодарю за полезные советы! ![]() |
|||
|
||||
Heal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.4.2011 Репутация: нет Всего: нет |
Здравствуйте. Я написал программу, которая запрещает/разрешает доступ к каталогу на уровне прав доступа. Я так понимаю, что это не эффективно, т.к. можно вручную снять это ограничение. Про читая ваши посты, я понял, что драйвер получается ниже и так просто ограничение не снимешь. Подскажите какую информация мне посмотреть, что бы написать такой же драйвер и можно ли его написать на Builder'e 6?
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
Heal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.4.2011 Репутация: нет Всего: нет |
Спасибо. Т е его надо собирать в Visual studio, которая заточена на сбор драйвера???
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
Heal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.4.2011 Репутация: нет Всего: нет |
Нубский вопрос, но все таки задам - там в чем его собирать?
![]() |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
build' ом
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
KAlex1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 18.10.2009 Где: Ukraine, Zaporozh ye Репутация: нет Всего: нет |
выкладываю сорцы(со вспомогательными проектами) 3х летней давности) может быть кому-нибудь будет полезно, для общего развития.
помню что за этот курсовой получил твердую 5, и всем студентам того же желаю. Благодарю всех, кто принимал участие, и подсказывал. Особенно bra1ny и xvr. Это сообщение отредактировал(а) KAlex1 - 31.5.2012, 20:53 Присоединённый файл ( Кол-во скачиваний: 24 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |