Как заблокировать доступ некоторых приложений к Интернету (C ++, Win32) - PullRequest
5 голосов
/ 08 января 2009

Я хочу, чтобы приложение или служба работали, и по некоторому расписанию может отключить доступ к Интернету для всех приложений, кроме определенных.

Я пытаюсь создать фильтр, который можно включать или выключать под программным управлением. Не только IP-адреса и порты, но я также хочу иметь возможность блокировать определенные приложения, подобно тому, как Zone Alarm и другие программные брандмауэры позволяют блокировать.

Например, iexplore.exe, skype.exe, firefox.exe, aim.exe. Но все равно необходимо разрешить другим приложениям подключаться по мере необходимости.

Он должен работать как на Vista, так и на XP, но я ожидаю, что метод будет отличаться на каждой из этих платформ.

По сути, фильтр должен связать сетевое взаимодействие с исполняемым файлом, который делает запрос, а затем разрешить или отклонить его.

Обновление:

По крайней мере Vista похоже, что я хочу использовать фильтры в слоях ALE WFP .

На XP , я все еще ищу лучший способ сделать это. Нужно ли мне писать драйверы устройств и работать с ядром? Я просто скромный разработчик приложений. Убей меня сейчас.

Обновление 2:

В настоящее время изучаем PfCreateInterface и связанные с ним Pf * API для систем до Vista.

Ответы [ 6 ]

3 голосов
/ 09 января 2009

Вы можете динамически изменять политики брандмауэра Vista и XP с помощью интерфейса INetFwAuthorizedApplications из API брандмауэра Windows.

Также см. Этот вопрос .

1 голос
/ 23 ноября 2010

путем ограничения доступа к интернету с помощью брандмауэра. перейдите на вкладку «Дополнительные настройки брандмауэра» (win 7) и сделай это

1 голос
/ 08 января 2009

Вам придется написать драйвер устройства, который фильтрует трафик на основе исполняемого файла, запрашивающего трафик.

0 голосов
/ 08 января 2009

Не могли бы вы отодвинуть (то есть переименовать) системную DLL-библиотеку winsock и заменить ее своей? Ваш должен предоставить тот же API, но проверить имя процесса входящих запросов ... вернуть код ошибки заблокированным приложениям и перенаправить вызовы разрешенных приложений в настоящую DLL.

0 голосов
/ 08 января 2009

Вам нужно будет перенаправить все (или хотя бы много) вызовы функций WinSock API любой запущенной программы на ваши собственные функции замены. Это означает попадание в память каждой запущенной программы и захват этих функций, что является ... интересным ... упражнением. : -)

Этого может быть достаточно, чтобы начать работу, или, по крайней мере, предложить более конкретные вопросы.

0 голосов
/ 08 января 2009

Я не уверен, но я думаю, что вам нужно сделать это, запустив программу от имени пользователя с ограниченными правами, вопрос в том, можете ли вы создать учетную запись пользователя, которая останавливает такие вещи? *

...