2016-01-06 17 views
8

Ci sono alcuni programmi come Proxifier che può forzare un file EXE per utilizzare un proxy. Ce ne sono anche altri. Ma i siti sembrano tutti un po 'loschi. Non mi fido nemmeno di Proxifier tbh ... quindi mi piacerebbe sapere come funzionano questi programmi. Come lo fanno? Esiste una funzione WinAPI che può essere utilizzata per farlo? O devi effettivamente inserire il codice nei processi?Come forzare un processo specifico per utilizzare un proxy per la comunicazione di rete

ero solo in grado di trovare le funzioni per modificare il proxy globale delle finestre. Ma alcuni programmi non si preoccupano di ciò che dice il proxy globale, cercano sempre di connettersi direttamente, anche se non è possibile ...

+0

I * think * si utilizzerà un driver di filtro NDIS per questo genere di cose. Ma non ho familiarità con la tecnologia. –

+0

So che wireshark utilizza una tecnologia che funziona a livello di driver. È in grado di catturare tutto il traffico di rete sul mio PC, ma è troppo basso per sapere quale processo ha inviato quale pacchetto. Quindi penso che ciò che hai suggerito non funzionerà. – Forivin

+0

Perché dovresti sapere quale processo ha inviato un pacchetto? (Ma ho il sospetto che tu possa, se ne hai bisogno, se la porta sorgente del pacchetto non identificasse in modo univoco il processo da cui proviene?) –

risposta

0

Penso che Wininet.dll sia il metodo canonico per accedere a HTTP dai programmi in modalità utente su Windows . (La documentazione per il supporto di rete e Internet di Windows è here.Non volevo esaminare tutto il documento, ma sono abbastanza sicuro che Wininet.dll sia quello giusto)

Un metodo per eseguire un processo proxy, è scrivere una DLL che si comporta come Wininet.dll (e si trova in cima al Wininet.dll di Windows). Il tuo Wininet avrebbe una sorta di meccanismo (registro, file di configurazione, ecc.) Per determinare se un particolare processo deve essere delegato o meno. Se il processo non viene inoltrato, tutte le chiamate passano al Wininet originale, ma se il processo viene inoltrato, Wininet esegue il reindirizzamento.

altro, in qualche modo simile, punto di iniezione è al livello Winsock (ws2_32.dll). (Di nuovo in Windows 3.1, Win95 era, era abbastanza comune per sostituire winsock.dll (ws2_32 predecessore) da fornitori di stack TCP/IP.) Here's un caso in cui lo stesso concetto viene utilizzato per catturare il traffico a livello di Winsock. L'articolo al link ha un bel diagramma che illustra il concetto e i dettagli di implementazione della sostituzione di ws2_32.dll.

1

Proxifier è basata su LSP (layered service provider), ma personalmente non ho mai piaciuto tecnologia a causa della spesso problemi di stabilità. Tuttavia, oltre a LSP ci sono altri possibili approcci adatti per ottenere la stessa funzionalità, qui puoi trovare una breve copertura dei metodi di filtraggio della rete (incluso LSP): https://www.ntkernel.com/ndis-hooking-drivers-and-legacy-windows-systems/, tuttavia il documento è un po 'obsoleto, ho scritto in tempo di alba di Windows XP e non copre WFP (Windows Filtering Platform), che ha sostituito TDI e NDIS Lightweight Filter, che ha sostituito i driver NDIS Intermediate e NDIS-hooking. Entrambe le tecnologie sono state introdotte da Windows Vista insieme a NDIS 6.0.

Problemi correlati