游戏协议测试二:协议工具开发技术介绍

简介: 游戏客户端通常是与服务器直接进行通信,如何通过工具来进行协议的修改和创建呢?第一种就是直接在客户端代码里面增加一些类似GM指令的测试接口,来达到对每个接口的测试目的。第二种就是从外部对双方的通讯网络下手,通过第三方将协议截获修改后再发送给对方,从而达到协议测试的目的如图1,本篇文章就是针对第二种方式来做介绍。

游戏协议测试二:协议工具开发技术介绍


系列目录


游戏协议测试一:协议测试介绍


一、前言


   上一期对协议测试作了简单介绍,在了解如何做协议测试之后,就需要有对应的工具来支持测试。本期就协议测试工具开发进行简单介绍,希望对读者有帮助。



二、协议工具功能介绍


   游戏客户端通常是与服务器直接进行通信,如何通过工具来进行协议的修改和创建呢?第一种就是直接在客户端代码里面增加一些类似GM指令的测试接口,来达到对每个接口的测试目的。第二种就是从外部对双方的通讯网络下手,通过第三方将协议截获修改后再发送给对方,从而达到协议测试的目的如图1,本篇文章就是针对第二种方式来做介绍。


640 (5).png

图1


   在开发工具前需要先了解工具需要实现哪些功能,从而更好的设计出使用方便,通用的工具来。下面主要列举了协议工具需要提供的5个功能:


       1. 协议修改。通过将捕获的协议内容进行部分修改,再发送出去测试接收方的响应行为。例如捕获领取任务A的奖励协议,修改为领取未完成的任务B的奖励,达到测试服务器是否有做检查判断。


       2. 协议重发。 直接将捕获的协议再发送出去,例如捕获领取奖励的协议,重复发送看是否可以再次获得奖励。


       3. 修改顺序。将捕获的协议打乱顺序后发送出去,测试接收方的响应行为。这种主要是测试有依赖顺序的业务,确保业务流程的正确性。


       4. 协议解析。 工具捕获的协议是二进制流数据,然后转换成十六进制显示。但是如果能够知道每条协议的具体内容,就可以方便测试人员使用。


       5. 其他接口。 其他因不同项目所需的接口提供,以支持不同使用场景下的功能需求。


   针对上面的功能需求进行初步总结,首先是需要能够捕获通信中的协议,其次是能够修改捕获的协议,最后就是需要对捕获的协议提供扩展接口方便其他需求。其实这里面还有一个隐含需求就是需要能够伪造新的协议,且必须能够验证通过。


三、协议工具技术开发


640 (6).png

图2


   图2所展示的是我目前已经开发使用过的技术,从上到下难度逐步加深,可以适用不同的场景和需求,下面就来简单的介绍下这几个的原理实现。


   1) 镜像服务器


       在协议工具内部创建一个服务器,并绑定到某个端口上。然后修改客户端连接的服务器地址为工具的地址,连接到工具后,再由工具连接服务器进行协议转发,类似服务器架构中的网关服务器。这样就达到了截获双方协议的目的,而且可以很方便的发送协议。


       缺点:需要修改客户端连接服务器的地址,这个一般不会造成什么问题,除非无法修改客户端。


   2) HOOK技术


       我们知道客户端与服务器进行通讯利用的是socket,在Windows下可以使用钩子去修改send,recv,sendto,recvfrom函数接口地址,从而达到协议数据先被协议工具截获(这里暂不说其他系统)。


       缺点:采用钩子编写难点较高,另一个问题就是如果客户端做了反注入这些防范后,工具实现就更难。


   3) 系统网络层


       通过网络层捕获原始网络包,以及伪造网络包可以很方便的实现协议工具,目前的技术有TDI、NDIS,WFP等等。我是在发现WinDivert之后,开始尝试使用的。这是一个非常好用的抓包网络框架,而且支持win7,win10系统。由于直接捕获的是网络层的协议包,因此适用范围很大。而且掌握了这项技术后,是可以搞大事的哦。


       难点:抓取的是网络原始包,需要更高层面的理解网络包的结构,UDP协议包可以很好的修改和创建包发送,但是TCP就很麻烦,主要是需要维护Seq序列号/Ack确认号。具体可以百度一篇叫做《基于TCP协议的网络数据实时篡改》的文章,我仅能实现功能,原理讲解还是看专业的文章更明白点。


四、后记


   这篇文章也只是对这些技术进行了简单的介绍,后续有时间的时候会专门对HOOK和网络层包捕获做介绍,其实如果仅满足需求的话,采用镜像服务器就可以了。如果读者有更好的实现技术欢迎分享


欢迎微信搜索"游戏测试开发"关注一起沟通交流。

相关文章
|
23小时前
|
安全 物联网 物联网安全
物联网设备的安全性评估与测试:技术深度解析
【7月更文挑战第7天】物联网设备的安全性评估与测试是保障物联网系统安全运行的重要环节。通过实施全面的安全性评估与测试,可以发现并修复设备中存在的安全漏洞和风险,提高整体安全防护能力。然而,由于物联网设备的多样性和复杂性以及安全标准与监管的缺失等挑战,测试工作需要不断创新和优化。未来,随着技术的不断进步和实践的深入,物联网设备的安全性评估与测试将更加完善和高效。
|
3天前
|
运维 监控 大数据
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
|
3天前
|
敏捷开发 Java jenkins
实现Java中的自动化测试策略和工具推荐
实现Java中的自动化测试策略和工具推荐
|
4天前
|
数据采集 监控 数据可视化
利用LabVIEW和数字孪生技术实现PCB电路板测试
利用LabVIEW和数字孪生技术实现PCB电路板测试
|
5天前
|
jenkins 数据管理 测试技术
在LabVIEW开发生命周期中提高代码质量的自动化测试方法
在LabVIEW开发生命周期中提高代码质量的自动化测试方法
|
5天前
|
Prometheus 监控 数据可视化
性能测试:主流性能监控工具介绍
Linux系统中,`vmstat`和`top`提供基本监控;Nmon是实时性能分析工具,轻量且功能丰富;Collectd+InfluxDB+Grafana组合用于系统数据收集、存储和可视化;Prometheus+Grafana则提供灵活的监控和定制化仪表板。这些工具帮助企业监控系统性能,及时发现和解决问题。
17 0
|
5天前
|
数据采集 数据可视化 数据管理
LabVIEW开发实验室超导体电流特性测试系统
LabVIEW开发实验室超导体电流特性测试系统
|
5天前
|
测试技术 Apache Scala
性能测试方法与工具比较
性能测试方法与工具比较
|
7天前
|
JSON JavaScript 测试技术
Postman接口测试工具详解
Postman接口测试工具详解
16 1