Здравствуйте Нужно создать скрытый процесс, который бы блокировал все соединения на машине, кроме некоторых портов и слушал один из портов на предмет команды "снять/установить блокировку". Я думал реализовать это с помощью драйвера-фильтра, сразу обеспечивается скрытость работы для пользователя. Но несовсем понятно,. С драйверами работать я только начал, поэтому возникли такие вопросы: * имеет ли вообще смысл писать для этого драйвер? * насколько я понял, копать нужно в сторону NDIS? * теоретически можно использовать WinPCap для такой фильтрации (догадки), но можно ли приспособить его быть скрытым? Ведь приложение, его использующее нужно прятать отдельно * как организовать прослушку/передачу/прием через соединение из драйвера (только общий принцип, я не прошу подробно рассказывать )? Или единственный выход - писать еще и user-mode приложение дополнительно? Была идея создать службу, это ведь почти user-mode драйвер. Но ее и выгрузить пользователю проще.. Спасибо
Да. Не обязательно. По сути, сойдёт любой фильтрующий механизм режима ядра. Ничего не понял, о чём речь.
x64 Спасибо за ответ Драйвер этот должен слушать один из портов (если можно так выразится в терминах kernelmode) на поступление сигналов по сети на один из постоянно открытых портов (и в зависимости от них включать/снимать блокировку остальных портов). Какой механизм для этого можно (и нужно) использовать?
И еще такой вопрос - если нужно поставить такой фильтр на уровень ниже фильтров файерволлов - то есть что-то наподобие KIS не перенаправляло все соединения в обход моего фильтра,каким образом встроиться на "самый нижний уровень"?
Попробую перефразировать * В какую сторону копать, чтоб организовать взаимодействие с сокетами на удаленных машинах из драйвера, насколько я понимаю, в ядре понятие сокет недоступно, ведь это юзермодная надстройка. Насколько сложнее устанавлить соединения, отсылать и принимать данные в режиме ядра? Есть какие-то способы, кроме прямого обращения к драйверу сетевой карты (это все, до чего мне удалось додуматься). То есть, установить сетевое соединение из драйвера * Насколько я знаю, несколько программ могут устанавливать сетевые фильтры - всякие снифферы, касперские.. Можно ли как-то встроить себя на самый низкий уровень (чтобы через фильтр проходили все пакеты, не шли в обход моего фильтра)?
Это не проблема, если использовать TDI-клиента или (для Vista и выше) Winsock Kernel. Теоретически, да.
x64 Большое спасибо за вашу помощь! И еще такой вопрос появился - вы не знаете где можно почитать про сетевую подсистему Windows 7 с точки зрения ядра? Сильно ли она изменилась по сравнению с Vista?
Принципиальных отличий нет, доработки только, ну вот DNS'ку прикрутили к сокетам наконец-то, etc. А читать в WDK, там же сэмплы.