免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:15.第二阶段x86游戏实战2-使用C++读取人物状态
上一个内容里使用c++语言把游戏中人物的状态读取了出来,并且打印到了日志(Dbgview.exe)中,本次开始继续搞逆向,首先逆向的入手点是游戏的网络
涉及网络就有了发包和收包的概念
开始之前要了解游戏客户端和服务端是怎样的一个存在,在我们玩家电脑上的是游戏客户端,在游戏运营商那边是游戏服务端,比如一个走路的场景,走路就会有两个地点人物当前位置(a点)和目的地(移动到的位置,b点),游戏客户端会通过网络封包(发包)告诉游戏服务端现在要从a点去到b点,游戏服务器接收到之后会给游戏客户端返回一个数值,比如可以移动或不可以移动,返回不可以移动的效果会是看到走过去了但是瞬间又还原了还可能掉线还可能会封号,这样游戏客户端和游戏服务端形成了一个交互的行为
游戏中发包的方式(函数):
主流的发包函数在ws2_32.dll中,ws2_32.dll是Windows系统提供的,函数名是send、sendto、WSASend,其中send和WSASend用的比较多sendto在游戏领域中用的很少,然后 send、sendto、WSASend 是函数那么使用OD在它们的头部打断点就能知道游戏发送的数据包是什么
然后 send、sendto、WSASend 它们三个最终都会调用WSPSend函数,所以有些游戏在 send、sendto、WSASend 中打断点会发现没反应,它这就是没有通过 send、sendto、WSASend 直接调用了WSPSend函数,在WSPSend函数头部打断点才能断下来
理解发包流程:25.x86游戏实战-理解发包流程
发包函数:26.x86游戏实战-寻找公共call_wspsend怎么寻找
WSPSend函数查找:28.x86游戏实战-初探XXX发包