gpt4 book ai didi

c++ - 获取套接字句柄以供稍后比较

转载 作者:行者123 更新时间:2023-11-27 23:01:35 25 4
gpt4 key购买 nike

我hook了一个游戏的socket函数。然后就可以从该游戏内部的套接字中获取接收和发送的数据。问题是:有超过 1 个套接字。

如何获得创建的第一个套接字的句柄?我 Hook 了函数 SOCKET,如下所示:

SOCKET GameMainSocket;

SOCKET _stdcall WSAAPI nSocket(int af,int type,int protocol)
{
UnHookFunction("ws2_32.dll", "socket", KSocketHook);
GameMainSocket = socket(af, type, protocol);
HookFunction("ws2_32.dll", "socket", (LPVOID*) nSocket, KSocketHook);
return GameMainSocket;
}

但是,稍后,当我尝试在 Hook 的 send 和 recv 函数中比较它时,如下所示:

int __stdcall nSend(SOCKET s, const char *buf, int len,int flags)
{
if (s = GameMainSocket)
{
// Allow send
}
}

刚刚跳过代码,所有检查都是正确的。

** 我真正的问题是:如何识别应用程序创建的每个套接字?

提前致谢!

问题已完全解决。

我现在的代码是:

if (s == GameMainSocket) 
{
// The magic goes here, encrypt packet with XOR (server does the same)
char* buf2 = (char*) malloc (len);
memcpy(buf2, buf, len);
//buf2[0] = buf2[0];
buf2[0] = buf2[0] ^ int("x") % 255;

}

最佳答案

if (s = GameMainSocket)

正在执行赋值,它将返回分配的值,如果它不为 0 则为真。您是要执行以下操作吗?

if (s == GameMainSocket)

关于c++ - 获取套接字句柄以供稍后比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27082584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com