内容参考于: 易道云信息技术研究院VIP课
上一个内容 :12.游戏网络通信存在的问题
现在把游戏网络的架构看了一个小小的大概,可以用它的接口发数据接收数据了,如果真正想用它这一套东西,真正核心不在于它的接口而在于它的数据包的格式或内容,写下来就是去解读它的数据
下图是之前用来说话的一段数据包:就是默认接收下图的数据,紧接着游戏里面就收到了说话的内容,这就是模拟服务器去欺骗客户端,一个例子比如人物跟人打架,摔倒了,摔倒了在客户端会有一个时间,比如一段时间里不能动,僵直这样的操作,然后利用数据包,给自己发一个数据包,又站起来了,在客户端上站起来了,在服务端还没有,这个时候如果限制不严格,在客户端做的操作就又会发送给服务端,通过这样的方式就可以做很多事情,这也是研究漏洞的一种非常重要的形式,所以漏洞不仅仅是从客户端发数据到服务端,也有模拟服务端发数据给客户端
然后接下来,该怎样解读这个数据包?首先上图中的内容,它说话的内容肯定存在,这个数据是怎样组织怎样解读,可以通过逆向分析去分析,但是通过逆向分析去分析只适用一两个数据,如果说有大量的数据全部通过逆向分析成本是非常高的,所以要优先进入一个初步分析,然后把那些不能突破的东西再逆向分析。
然后正常来讲,客户端拿到一段数据它会进行解读,然后不同的数据,它不可能每个数据都有不同的解读方式,就算它有解读的方式,那它也必须要有解读的图纸,就是说这个东西应该根据图纸这样解读,或者说它没有这样的规划,它就要有一种系统性的解读方式。
如果它用的图纸,比如:
A数据包用的a号图纸解读,B数据包用b号图纸解读,就是把数据包定义成结构体,比如前面两个代表什么后面两个代表什么只要放到这个结构体里就行,这也就是说拿到结构体的定义就可以了
系统性的方法:
有系统性的就要破解出来写成算法,然后用这个系统性方法还原数据去组织数据
数据包只能多看多搞,用文本文档搞比较类,所以要搞个工具。
工具的功能:
首要要把数据包显示出来,然后还要可以把选中的数据单独拿出来显示方便查看,比如关键信息在数据包里一定是有的,但有很多信息不知道它是什么内容,就把其中某段数据选中,比如选中了四个字节的数据,然后就要把这四个字节组合起来的内容显示出来,如果它是字符串是什么样子,如果它不是字符串是小数是什么样子等就是把所有常用的类型都展示出来,然后根据显示的内容就可以猜测数据包里这四个字节的数据是什么东西
工具的功能划分:
1.显示通信数据包内容,根据数据包类型进行分别显示
2.能够显示鼠标选中的区域可能的内容
3.搜索,比如123456它出现在那一段里面
4.把内容写到硬盘文件
5.可以在不同项目中使用,所有网络通信就三个元素,第一是数据包,第二是它的长度,还有类型
6.过滤,比如某个数据包解读好了,比如数据包开头0x1F是它的特征,这时就把开头是0x1F的数据包过滤掉