Исходящие соединения перенаправления C++

Есть ли какой-либо путь в C++ на окнах, чтобы контролировать программу и перенаправить какие-либо исходящие запросы, которые это выполняет на определенном порте? Я имею простого прокси HTTP C++ и хочу, чтобы он смог автоматически перенаправить все запросы браузера на порте 80 через себя.

5
задан Ilia Choly 6 February 2010 в 18:22
поделиться

3 ответа

Самый простой способ сделать это - создать обработчик ядра Windows, который перехватывает запросы сокетов и перенаправляет их на ваш прокси.

Некоторая полезная документация по этому поводу:

http://www.internals.com/articles/apispy/apispy.htm

Если вы используете Windows Vista или лучше, рассмотрите платформу фильтрации Windows (WFP) :

http://www.microsoft.com/whdc/device/network/wfp.mspx

Также обратите внимание на Объезд (коммерческий) и EasyHook (бесплатно ). Они значительно упрощают процесс написания хуков и перенаправления вызовов API (как Win32, так и Application).

5
ответ дан 14 December 2019 в 13:35
поделиться

Если вы имеете в виду [любой порт назначения] к [одному порту], тогда вам придется полагаться на специальные драйверы. Проблема с окнами заключается в невозможности изначально блокировать [отбрасывать] пакеты. Например, обычным решением является winpcap. Однако, хотя вы можете отслеживать трафик, вы не можете остановить его или изменить его полезным образом.

В Windows единственное решение, которое я видел, - это использование некоторого открытого адаптера TUN / TAP . Благодаря этому вы сможете изменять каждый пакет, покидающий вашу систему.

Если вы заранее знаете, какой порт назначения вы будете использовать, то все становится довольно просто. Просто напишите сквозную программу сокета C ++, которая изменит только порт назначения.

Если вы хотите перенаправить запросы браузера, вы можете просто изменить настройки в своем браузере.

1
ответ дан 14 December 2019 в 13:35
поделиться

Программа должна быть запущена с административными привилегиями в режиме ядра операционной системы хоста.

Хотя у меня нет большого опыта работы с крюками ядра windows, в BSD и linux тривиально установить модуль ядра, который перезаписывает системные вызовы для создания сокетов и может легко перенаправить все сокеты на выбранный прокси-сокет.

0
ответ дан 14 December 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: