Erzwingen, dass ein bestimmter Prozess einen Proxy für die Netzwerkkommunikation verwendet

8

Es gibt ein paar Programme wie Proxifier , die eine exe zwingen können, einen Proxy zu verwenden. Es gibt noch ein paar andere. Aber die Seiten sehen alle etwas schattig aus. Ich vertraue nicht einmal Proxifier tbh ... Also würde ich gerne wissen, wie diese Programme funktionieren. Wie machen Sie das? Gibt es eine WinAPI-Funktion, die dazu verwendet werden kann? Oder müssen Sie Code tatsächlich in die Prozesse einbringen?

Ich konnte nur Funktionen finden, um den globalen Proxy von Windows zu ändern. Aber einigen Programmen ist es egal, was der globale Proxy sagt, sie versuchen immer direkt eine Verbindung herzustellen, selbst wenn es nicht möglich ist ...

    
Forivin 06.01.2016, 16:00
quelle

2 Antworten

1

Proxifier basiert auf LSP (Layered Service Provider) , aber persönlich gefiel mir diese Technologie wegen der Stabilitätsprobleme nicht . Neben LSP gibt es jedoch andere mögliche Ansätze, um die gleiche Funktionalität zu erreichen. Eine kurze Darstellung der Netzwerkfiltermethoden (einschließlich LSP) finden Sie hier: Ссылка , aber das Dokument ist ein wenig veraltet, ich habe es in Zeiten der frühen Windows XP Morgendämmerung geschrieben und es deckt nicht WFP ( Windows Filtering Platform), die TDI ersetzt hat, und NDIS Lightweight Filter, der NDIS Intermediate- und NDIS-Hooking-Treiber ersetzt. Beide Technologien wurden von Windows Vista zusammen mit NDIS 6.0 eingeführt.

    
vadim 05.05.2016 21:41
quelle
0

Ich denke, Wininet.dll ist die kanonische Methode für den Zugriff auf HTTP von Benutzermodusprogrammen unter Windows. (Die Dokumentation für die Windows-Netzwerk- und Internetunterstützung lautet hier Ich wollte nicht das gesamte Dokument durchgehen, aber ich bin mir ziemlich sicher, dass Wininet.dll die richtige ist)

Eine Methode zum Ausführen eines Pro-Prozess-Proxys besteht darin, eine DLL zu schreiben, die wie Wininet.dll funktioniert (und sich oberhalb der Windows-Wininet.dll befindet). Ihr Wininet hätte eine Art von Mechanismus (Registry, Konfigurationsdatei usw.), um zu bestimmen, ob ein bestimmter Prozess proxiiert werden soll oder nicht. Wenn der Prozess nicht umgangen wird, werden alle Aufrufe an das ursprüngliche Wininet weitergeleitet. Wenn der Prozess jedoch proxisiert wird, führt Ihr Wininet die Umleitung durch.

Ein anderer, etwas ähnlicher Injektionspunkt befindet sich auf der Winsock-Ebene (ws2_32.dll). (Zurück in der Windows 3.1, Win95-Ära, war es ziemlich üblich, winsock.dll (ws2_32 Vorgänger) durch Anbieter von TCP / IP-Stacks zu ersetzen.) Hier ist ein Fall, in dem das gleiche Konzept verwendet wird, um den Traffic auf der Winsock-Ebene zu erfassen. Der Artikel auf der Verknüpfung hat ein schönes Diagramm, das das Konzept sowie Implementierungsdetails zum Ersetzen von ws2_32.dll veranschaulicht.

    
Χpẘ 17.01.2016 23:34
quelle

Tags und Links