我迷上了游戏的一些套接字功能。然后可以从该游戏中的套接字获取接收和发送数据。问题是:有超过1个套接字。
我怎样才能获得FIRST套接字的句柄?我连接了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;
}
但是后来,当我尝试在hooked 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;
}
答案 0 :(得分:4)
if (s = GameMainSocket)
正在执行赋值,该赋值将返回指定的值,如果它不为0则为true。 你的意思是做什么?
if (s == GameMainSocket)