我有一个游戏客户端。它连接到这个游戏。我正在尝试设置一个套接字服务器,它拦截所有到游戏服务器的流量(游戏通过使用套接字运行)
我的问题是,我需要将我的计算机到游戏服务器 ip + 端口的所有流量重定向到 127.0.0.1,以使其首先连接到我自己创建的套接字服务器。
我知道我可以使用 Windows hosts 文件,但这会重定向所有流量。我只希望重定向 1 个端口(具有 TCP 流量的端口)。如果 HTTP 流量也被重定向,则会破坏一切。
我使用的是windows 7 编程语言是java。
答案1
您可以使用分层服务提供商 (LSP)。您需要做的是拦截建立连接的操作并更改目标 IP 地址(可能还有端口)。您可能还需要拦截操作以获取远程套接字地址,以使其与应用程序预期的地址一致,但这不太可能。应用程序通常不会检查它们发起的 TCP 连接的远程地址。
一种更简单的方法是挂接应用程序发出的 WSAConnect 调用并直接更改目标 IP 地址。您可以通过多种方式执行此操作。例如,您可以使用微软绕行。您还可以为应用程序提供您自己的 Winsock DLL,以便将操作转发给常规 DLL。还有许多其他 API 拦截方法。