[英]Intercepting / Redirecting outgoing http connections on windows
我想重定向Windows计算机上的传出http连接(不使用系统代理)。
背景:
我有一些旧软件可以与现已失效的Web服务交互。 我已经在一个简单的桌面应用程序中模拟了该服务,并希望将传出的http请求重新路由到该应用程序。
实验上我已经使用Windows主机文件成功重定向到localhost,但这是不切实际的,因为我还有其他需要在默认http端口80上侦听的服务,并且我不想为此设置另一个物理服务器
旧版软件不使用系统代理,因此像FiddlerCore之类的解决方案将无法工作(不幸的是,因为它很棒!)
我注意到在与Winsock结合使用的类似问题中提到的EasyHook,但是我对低级编程的经验非常有限,在我踏上漫长而混乱的旅程之前,我想检查一下我是否在正确的道路上!
因此,从理论上讲,是否有可能通过钩住winsock来拦截和重定向不使用系统代理的出站http通信(最好使用c#中的easyHook)?
一个简单的是/否答案就可以了,有些推理,甚至更好的文档都很棒
我已经做过很多次了,所以这绝对有可能。 使用以下步骤开始。
CreateProcess
启动目标应用程序,然后将CREATE_SUSPENDED
传递给dwCreationFlags
参数。 这将启动目标应用程序,但不会开始执行。 gethostbyname
。 ResumeThread
以开始执行。 hostent
结构的有效指针时,调用真正的 gethostbyname
Winsock函数,更改地址数据以使其指向您的回送设备(localhost)。 根据目标应用程序的工作方式,您可能需要挂钩其他Winsock函数,但是挂钩gethostbyname
通常对于这种情况就足够了。
您将需要编写C ++或C中DLL中的钩子函数。在这里使用C#可能不是一种选择,而且它会引入很多依赖关系,这些依赖关系可能导致与目标应用程序发生冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.