模拟数据包发送和恢复

时间:2014-12-08 23:53:34

标签: c++ sockets hook simulate

我已经为游戏过程挂钩了send和recv函数。现在我可以处理发送的内容和收到的内容。

我的职能是:

int __stdcall nSend(SOCKET s, char *buf, int len,int flags)
{
    UnHookFunction("ws2_32.dll", "send", KSendHook);   
    int result = send(s, buf, len, flags); // Send data 
    HookFunction("ws2_32.dll", "send", (LPVOID*) nSend, KSendHook);

    return result; 
}

int __stdcall nRecv(SOCKET s, char *buf, int len, int flags)
{
    UnHookFunction("ws2_32.dll", "recv", KRecvHook); 
    int result = recv(s, buf, len, flags); // Receive data
    HookFunction("ws2_32.dll", "recv", (LPVOID*) nRecv, KRecvHook);

    return result;
}

我的问题是:

我挂了这个函数,所以我只能解释和修改发送和接收的内容。 如果我是游戏,我需要发送新的数据包结构。使用相同的套接字。

如何模拟钩子函数的同一套接字的send和recv?

1 个答案:

答案 0 :(得分:0)

调用钩子接收函数时,根据需要调用实际的发送和接收函数。当您有数据要返回给调用者时,将其返回给调用者。当调用send时,取出发送的数据,决定是否要向服务器发送任何内容,并根据需要调用send和receive与服务器通信。