Как отследить, как работает автоответчик fiddler?

#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 только для того, чтобы сопоставлять входящие подключения обратно с их исходным идентификатором процесса, который используется для столбца «Процесс» в пользовательском интерфейсе.