Есть несколько API, которые вы можете использовать для этой задачи.
Одним из них является LSP (многоуровневые поставщики услуг), который представляет собой Winsock2 API для написания библиотек DLL поставщиков услуг, которые могут перехватывать все вызовы Winsock, например connect () или WSAConnect (). Подробнее об этом здесь: www.komodia.com
Еще один «обходной путь» - библиотека Microsoft для перехвата любого вызова API. Подробнее об этом здесь: research.microsoft.com/en-us/projects/detours/
Еще одним является так называемое исправление IAT (Import Address Table). У меня нет ссылки для этого.
Другой подход - написать DLL, назвать ее «wsock32.dll», реализовать все вызовы Winsock2, используемые вашим целевым приложением, и просто поместить ее в папку с целевым приложением. Когда приложение запустится, оно будет использовать локальный «wsock32.dll» вместо системного.
Как правило, вы хотите использовать некоторые из этих API для перехвата вызовов Winsock connect () или WSAConnect (), установить соединение через прокси-сервер в вашем коде и вернуть подключенное соединение в вызывающую сторону.
Возможно, вы также хотите прочитать о внедрении DLL.