我将一个dll注入游戏客户端,并使用Easyhook将send/recv挂接起来。我可以很容易地监控客户端发送到服务器和从服务器接收的数据包。我想发送自己的数据包,所以我做了一个函数,如下所示:
public static void SendPacket()
{
string packet= "dance emotion packet";
byte[] byData = System.Text.Encoding.ASCII.GetBytes(packet);
IntPtr unmanagedPointer = Marshal.AllocHGlobal(byData.Length);
Marshal.Copy(byData, 0, unmanagedPointer, byData.Length);
send(socket, unmanagedPointer, byData.Length, 0);
}我认为程序可以很好地发送数据包,但是我没有从服务器收到任何东西。例如,如果我发送一个数据包去做一个舞蹈情感,服务器不会响应。有趣的是,当我在客户端做一些事情时(例如,开商店或搬家,或者任何向服务器发送数据包的事情),服务器会响应我在使用注入的dll中的SendPacket()函数之前发送的舞包。
所以问题要么是我的dll无法发送数据包,要么是服务器没有响应。有人有解决这个问题的办法吗?
提前谢谢。
发布于 2014-05-17 23:51:30
这看起来不像是EasyHook的问题。您可能遗漏了一些特定的游戏协议细微差别,只有在游戏本身正确地向服务器发送响应您注入的数据包所需的信息之后,这些协议才会起作用。
https://stackoverflow.com/questions/19622448
复制相似问题