Был там, сделал это :-) Еще в 2000 году моя первая программа для Windows когда-либо была filter hook driver.
Что я сделал, это внедрение драйвера фильтра фильтра и запись приложения пользовательского пространства, которое подготовило таблицу фильтров, что разрешить и что запретить. Когда вы обходите свой первоначальный набор синих экранов (см. Ниже мой отладочный совет в режиме ядра), драйвер режима фильтра довольно прост в использовании ... он дает каждому пакету функцию, которую вы написали, и в зависимости от кода возврата ее бросает или пропускает его.
Пакеты Unfortunatley на этом уровне являются QUITE raw, фрагменты не собираются и больше напоминают «сетевую карту» конца вещей (но больше нет заголовков Ethernet). Таким образом, у вас будет довольно плохое время для декодирования пакетов для фильтрации с помощью этого решения.
Существует также драйвер крюка брандмауэра, как обсуждалось в этом codeproject article.
Если вы находитесь на Vista или Server 2008, вам лучше взглянуть на WFP (Windows Filtering Platform), что, по-видимому, является утвержденным API дня для написания брандмауэров. Я не знаю об этом, кроме Google, за последние несколько минут, когда я искал google для драйвера фильтра.
Update: Забыл верхушку отладочной:
Sysinternals DbgView показывает в режиме ядра выхода DbgPrint, и более важен - она также может читать их из файла дампа вашего последнего синего экрана производится. Так что посыпайте свой код dbgprint, и если bluescreens просто загрузит дамп в dbgview, чтобы увидеть, что произошло до его смерти ... ОЧЕНЬ полезно. Используя это, мне удалось без отладчика ядра.
Поскольку он основан сокеты , он не сможет обнюхивать входящие TCP-пакеты в Windows 7. (Microsoft искалечила сырые сокеты на несерверных версиях окон) – CodesInChaos
Мне, к сожалению, нужно решение WFP. – ChopperCharles