Написать свой такой - дело 25 минут.
Делал когда то именно то что ты описал для игры. Инжектим эту длл она подменяет ип по которому пытается соединится игра на 127.0.0.1 а настоящий ип сервера отсылает в прокси.
BOOL HookWSockConnect()
{
if (!HookFunc("ws2_32.dll", "connect"))
if (!HookFunc("wsock32.dll", "connect"))
return FALSE;
return TRUE;
}
typedef int (*HookedConnectFunc)(__in SOCKET, __in const struct sockaddr_in*, __in int);
int HookedConnect(SOCKET s, const struct sockaddr_in* name, int namelen)
{
sockaddr_in* newSockAddr = new sockaddr_in();
newSockAddr->sin_addr.s_addr = inet_addr(LOCALIP);
newSockAddr->sin_port = name->sin_port;
newSockAddr->sin_family = name->sin_family;
Sleep(250);
return hook->Orig<HookedConnectFunc>()(s, newSockAddr, namelen);
}