2016-01-06 45 views
8

Istnieje kilka programów, takich jak Proxifier, które mogą zmusić exe do korzystania z serwera proxy. Jest też kilka innych. Ale wszystkie witryny wyglądają trochę podejrzanie. Nie ufam nawet Proxifier tbh ... Chciałbym wiedzieć, jak działają te programy. Jak oni to robią? Czy istnieje funkcja WinAPI, którą można w tym celu użyć? A może musisz wprowadzić kod do procesów?Jak zmusić określony proces do używania proxy do komunikacji sieciowej

Udało mi się znaleźć tylko funkcje umożliwiające zmianę globalnego proxy okna. Ale niektóre programy nie dbają o to, co mówi globalny serwer proxy, zawsze próbują się połączyć bezpośrednio, nawet jeśli nie jest to możliwe ...

+0

Myślę, że * użyłbyś sterownika filtru NDIS do tego typu rzeczy. Ale nie znam tej technologii. –

+0

Wiem, że wireshark używa jakiejś technologii, która działa na poziomie sterownika. Jest w stanie przechwycić cały ruch sieciowy na moim komputerze, ale jest zbyt niski, aby wiedzieć, który proces wysłał który pakiet. Myślę więc, że to, co sugerujesz, nie zadziała. – Forivin

+0

Dlaczego musisz wiedzieć, który proces wysłał pakiet? (Ale podejrzewam, że możesz, jeśli musisz, czy port źródłowy pakietu nie będzie w stanie jednoznacznie zidentyfikować procesu, z którego pochodzi?) –

Odpowiedz

0

Myślę, że Wininet.dll jest kanoniczną metodą uzyskiwania dostępu do HTTP z programów trybu użytkownika w systemie Windows . (Dokumentacja dla sieci Windows i obsługi Internetu jest here. Nie chciałem przejrzeć całego dokumentu, ale jestem prawie pewien, że Wininet.dll jest właściwy)

Jedna metoda wykonywania procesu proxy, jest napisanie pliku DLL, który działa jak Wininet.dll (i znajduje się na szczycie Wininet.dll Windows). Twój Wininet miałby jakiś mechanizm (rejestr, plik konfiguracyjny itp.), Aby określić, czy dany proces ma być proxy, czy nie. Jeśli proces nie jest proxy, wszystkie wywołania przechodzą do oryginalnego Wininet, ale jeśli proces jest proxy, to Wininet wykonuje przekierowanie.

Innym, nieco podobnym punktem wtrysku jest warstwa winsock (ws2_32.dll). (W erze Windows 3.1, Win95 dość często zastępowano winsock.dll (poprzednik ws2_32) przez sprzedawców stosów TCP/IP.) Here's to przypadek, w którym ta sama koncepcja służy do przechwytywania ruchu w warstwie winsock. Artykuł w linku zawiera ładny diagram ilustrujący koncepcję oraz szczegółowe informacje na temat implementacji zastąpienia pliku ws2_32.dll.

1

Proxifier jest oparty na LSP (layered service provider), ale osobiście nigdy nie lubiłem tej technologii z powodu często problemów ze stabilnością. Jednak oprócz LSP istnieją inne możliwe podejścia odpowiednie do osiągnięcia tej samej funkcjonalności, można znaleźć krótki zasięg metod filtrowania sieci (w tym LSP) tutaj: https://www.ntkernel.com/ndis-hooking-drivers-and-legacy-windows-systems/, jednak dokument jest trochę nieaktualny, napisałem w czasach wczesnego Windows XP nie obejmuje WFP (Windows Filtering Platform), który zastąpił TDI, i NDIS Lightweight Filter, który zastąpił NDIS Intermediate i sterowniki przechwytujące NDIS. Obie technologie zostały wprowadzone przez system Windows Vista wraz z NDIS 6.0.