有一些像Proxifier这样的程序可以强制exe使用代理。还有一些其他的。但这些网站看起来都有点阴暗。我甚至都不相信Proxifier tbh。所以我想知道这些程序是如何工作的。他们是怎么做到的?有没有一个WinAPI函数可以用来做这件事?或者你真的需要将代码注入到进程中吗?
我只能找到一些函数来改变windows的全局代理。但一些程序并不关心全局代理说了什么,他们总是试图直接连接,即使这是不可能的……
发布于 2016-05-06 05:41:50
Proxifier是基于LSP (layered service provider)的,但就我个人而言,我从来不喜欢这项技术,因为经常会出现稳定性问题。但是,除了LSP之外,还有其他可能的方法适合于实现相同的功能,您可以在此处找到网络过滤方法(包括LSP)的简短覆盖范围:https://www.ntkernel.com/ndis-hooking-drivers-and-legacy-windows-systems/,但是该文档有点过时,我是在Windows XP黎明时编写的,它没有涵盖取代TDI的世界粮食计划署,以及取代NDIS中间和NDIS钩子驱动程序的NDIS轻量级过滤器。这两种技术都是由Windows Vista和NDIS 6.0引入的。
发布于 2016-01-18 07:34:22
我认为Wininet.dll是从Windows用户模式程序访问超文本传输协议的标准方法。(有关Windows网络和互联网支持的文档是here
实现每进程代理的一种方法是编写一个DLL,它的行为类似于Wininet.dll (位于Windows的Wininet.dll之上)。您的Wininet将具有某种机制(注册表、配置文件等)。以确定特定进程是否要被代理。如果进程没有被代理,那么所有的调用都会转到原始的Wininet,但是如果进程被代理,那么你的Wininet就会进行重定向。
另一个有点类似的注入点是winsock层(ws2_32.dll)。(回到Windows3.1,Win95时代,由ws2_32/IP堆栈的供应商取代winsock.dll (ws2_32的前身)是相当普遍的。) Here's在winsock层使用相同的概念来捕获流量。链接上的文章有一个很好的图表,说明了替换ws2_32.dll的概念和实现细节。
发布于 2019-10-17 11:08:25
现代的方法是使用Windows过滤平台。
https://en.wikipedia.org/wiki/Windows_Filtering_Platform
https://docs.microsoft.com/en-us/windows/win32/fwp/windows-filtering-platform-start-page
是一组应用程序接口和系统服务,为创建网络过滤应用程序提供了一个平台。世界粮食计划署API允许开发人员编写代码,与在操作系统的网络堆栈中的多个层进行的数据包处理进行交互。在网络数据到达目的地之前,可以对其进行过滤和修改。
https://stackoverflow.com/questions/34637396
复制相似问题