拦截/重定向窗口上的传出http连接
Intercepting / Redirecting outgoing http connections on windows
我希望在Windows机器上重定向传出的HTTP连接(不使用系统代理)。
背景:我有一些遗留的软件与一个现在已经不存在的web服务交互。我在一个简单的桌面应用程序中模拟了该服务,并希望将传出的http请求重新路由到该应用程序。
实验我已经使用windows主机文件重定向到本地主机成功,但这是不切实际的,因为我有其他服务需要监听默认http端口80,我不想设置另一个物理服务器只是为了这个
遗留软件不使用系统代理,所以像FiddlerCore这样的解决方案不起作用(不幸的是,因为这是了不起的!)
我注意到EasyHook在类似的问题中提到,与winsock一起,但我的低级编程经验非常有限,在我踏上漫长而令人困惑的旅程之前,我想检查一下我是在正确的道路上!
所以,理论上是否可以拦截和重定向不使用系统代理的http流量通过挂钩winsock(最好是c#中的easyHook)?
一个简单的是或否的答案就可以了,一些推理,甚至更好的文档将是非常棒的
我已经做过很多次了,所以这绝对是可能的。使用以下步骤开始。
- 让程序使用
CreateProcess
启动目标应用程序,并将CREATE_SUSPENDED
传递给dwCreationFlags
参数。这将启动目标应用程序,但不会开始执行。 - 注入包含"trampoline"函数的DLL。
- 钩子Winsock函数
gethostbyname
. - 在目标进程主线程上调用
ResumeThread
开始执行。 - 在钩子函数中调用real
gethostbyname
Winsock函数,当它返回一个指向hostent
结构的有效指针时,更改地址数据,使其指向你的环回设备(localhost)。
根据目标应用程序的工作方式,您可能需要挂钩额外的Winsock函数,但挂钩gethostbyname
通常是足够的。
你可能想用c++或C来编写DLL中的钩子函数。在这里使用c#可能不是一个选择,因为它会引入很多依赖项,可能会导致与目标应用程序的冲突。
相关文章:
- 通过单独的 tcp 流建立 http 连接
- 断开连接后重新连接boost beast(asio)websocket和http连接时出错
- boost beast websocket服务器也接受http连接
- HTTP异常::无法连接到任何解决的端点-CPPRESTSDK
- 如何保持 HTTP 长轮询连接打开?
- 有没有办法方便地为 Winsock send() 生成 HTTP 标头,而不是手动连接字符串
- 互联网连接速度与HTTP请求的编程语言速度
- AJAX与C HTTP服务器断开连接
- 使用 BSD 套接字的 HTTP 服务器不关闭连接或与 Windows 浏览器通信
- c++http tcp服务器到服务器的连接
- HTTP 代理检测 HTTP 客户端断开连接
- 如何使Qt Websocket和QNetworkRequest (HTTP)使用相同的连接
- 拦截/重定向窗口上的传出http连接
- 我只是想在HTTP/1.1请求结束时关闭连接
- HTTP响应连接重置
- 使用libcURL通过HTTP代理连接FTP服务器失败
- 在连接关闭后发送HTTP POST/GET
- 将HTTP连接绑定到特定的适配器(提示:计量连接)
- Http post - 发送大数据 vc++ 时连接重置
- 我想与 POCO HTTP 服务器建立持久的 TCP 连接