32.第二阶段x64游戏实战-封包-公共call
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容:31.第二阶段x64游戏实战-封包-线程发包
上一个内容,通过对ws2_32.send函数设置断点,知道了这个游戏是使用线程发包,然后通过对ws2_32.send第二个参数也就是数据包的内容设置硬件写入断点,通过激活窗口来到了一个新地方,然后硬件断点没办法设置条件,所以要解决激活窗口发送数据包的问题
下面开始,来到下图红框位置,也就是通过对数据包设置硬件写入断点,再通过激活窗口触发硬件写入断点来到的(别忘了删除硬件写入断点)
先说一下情况
这章的标题是封包公共call,意思是不管走路、释放技能、发送聊天消息、激活窗口等发送的数据包,都会有组装数据包(明文包、非加密数据)、加密、发送数据包,这三个步骤,发送数据包就是ws2_32.send函数之前找过了,然后找加密和组织数据包的代码的过程中在ws2_32.send发现线程发包和激活窗口发包这两个问题,然后激活窗口发包通过条件断点进行了跳过,然后通过对数据包的内存地址设置硬件写入断点解决的线程发包,然后硬件断点没办法设置条件,所以只能先通过激活窗口发的包触发写入断点,从而再找条件,上图是通过激活窗口触发硬件写入断点来到的,也就是说现在解决了线程发包问题,还剩下激活窗口发包的问题,解决了激活窗口发包就可以找组装数据包的函数了(加密的我们看不懂没法用,所以肯定要找非加密的明文包)
解决激活窗口问题
首先删除硬件断点
然后按CTRL+F9再按F8来到下图位置
然后继续按CTRL+F9再按F8来到下图位置
然后继续按CTRL+F9再按F8来到下图位置
然后继续按CTRL+F9再按F8来到下图位置,然后按F9让代码运行起来,每按一次CTRL+F9再按F8都会写一个注释,一会要用到,至于按几次CTRL+F9再按F8,根据经验大约按五六次就可以,多了也没事
然后再次对数据包设置硬件写入断点
然后再次通过激活窗口触发硬件断点,来到下图红框位置,这里的代码就是把rdx的值放到r10里(r10是ws2_32.send第二个参数),然后这一层就分析完了
然后在下图红框位置设置断点
通过断点发现 rcx是ws2_32.send第二个参数(下图的内存地址和上面的不一样了,是因为游戏闪退了重新打开导致的),但是它有个问题
然后按F9,可以发现rcx的值再增加
然后继续按F9,可以发现rcx的值再增加
然后继续按F9,可以发现rcx的值再增加
然后继续按F9,可以发现rcx的值再增加
然后继续按F9,可以发现rcx的值再增加,rdx的值也再变化,rdx的值是数据包的数据,这说明当前断点位置在一个循环里,我们现在正在解决激活窗口发送数据包问题,解决这个问题要找一个固定的值做判断,所在现在断点的位置不是很合适,需要继续找
rdx的值,激活窗口发送的数据包也是0x0555
然后如下图来到第三层继续观察
然后如下图通过断点观察,现在的rcx不是ws2_32.send第二个参数,但rdx的值还是数据包的数据
然后按F8,可以看到rcx的值变成了ws2_32.send第二个参数,然后数据包的数据也写进去了,这个位置就感觉很符合条件断点
如下图设置条件断点,Word(rcx)!=0x0555,Word(rcx)的意思是读rcx两个字节的数据,到这就解决了激活窗口的数据包问题,然后接下来找公共call
然后下图是通过发送聊天数据触发的断点
然后按CTRL+F9再按F8
然后继续按CTRL+F9再按F8,可以发现在第四层按了CTRL+F9再按F8之后来到的位置和通过激活窗口跳到的位置不一样了,这说明第四层就是公共call,然后按F9让代码运行起来
然后鼠标左键单机下图红框位置,然后按回车键(Enter键)
然后就来到下图红框位置,也就是第四层函数的头部,到这公共call也就找好了
这里可以换一个激活窗口的条件判断,如下图通过激活窗口触发断点,然后下图红框位置是函数第一行,所以栈里的第一个数据就是返回地址,这个返回地址是返回到激活窗口的功能里,所以可以通过判断栈第一个数据来过滤激活窗口
下图是通过激活窗口触发的断点,0x00007FF663213A65是激活窗口代码的地址,通过上面的分析第四层是分界线,所以写 [rsp]!=0x00007FF663213A65 可以用来做过滤激活窗口
总结:
通过对ws2_32.send第二个参数设置硬件写入断点,然后通过激活窗口触发硬件写入断点,然后通过多次CTRL+F9再按F8,找到了激活窗口调用函数路线,然后在通过发送聊天数据触发断点也找到了聊天调用的函数路线,通过激活窗口路线和聊天路线的对比找到了公共call,通过对公共call设置 [rsp]!=0x00007FF663213A65 条件断点解决了激活窗口发送数据包问题