#windbg #fiddler #http-proxy
#windbg #скрипач #http-прокси
Вопрос:
На каком win32 API мне следует настроить bp, чтобы выяснить, как это работает http proxy
?
Обновить
Как fiddler удается перехватывать все http-запросы всех процессов?
Я знаю, что у него есть встроенный http-прокси-сервер, но как он заставляет все процессы использовать его http-прокси?
Ответ №1:
Смотрите это для того, как программно запрашивать и устанавливать настройки прокси в Internet Explorer
Я бы предположил, что он использует [GetTcpTable2][2]
и ищет записи для подключения в таблице.
Комментарии:
1. можете ли вы подробнее рассказать, как использовать
GetTcpTable2
для выполнения этой работы?2. Сначала используйте
getpeername
иgetsockname
при входящем соединении, чтобы получить локальные / удаленные порты. Найдите строку в таблице с локальными и удаленными адресами, которые являются обратными, и портами, которые соответствуют тем, которые вы получили для подключения. Вы должны увидеть две совпадающие записи, одна будет иметь PID вашего прокси, а другая — PID другого процесса.3. но как я могу заставить другие процессы программно использовать мой прокси?
4. Fiddler не «заставляет» другие процессы использовать его. Эти процессы просто используют конфигурацию Internet Explorer.
5. тогда что вы упоминаете
GetTcpTable2
иgetpeername
для?
Ответ №2:
На веб-сайте Fiddler есть масса информации о том, как это работает. У Fiddler не просто «есть» HTTP-прокси, это это HTTP-прокси с небольшим количеством пользовательского интерфейса, добавленного сверху. Приложения используют Fiddler, потому что они получают настройки WinInet / системного прокси, которые Fiddler устанавливает при подключении и отключает при отсоединении. Подходящим API для этого является InternetSetOption, передающий дескриптор null и структуру, которая указывает на прослушивающий порт TCP / IP Fiddler (127.0.0.1).
Fiddler использует API IPHelper только для того, чтобы сопоставлять входящие подключения обратно с их исходным идентификатором процесса, который используется для столбца «Процесс» в пользовательском интерфейсе.