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

简介: 游戏客户端通常是与服务器直接进行通信,如何通过工具来进行协议的修改和创建呢?第一种就是直接在客户端代码里面增加一些类似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和网络层包捕获做介绍,其实如果仅满足需求的话,采用镜像服务器就可以了。如果读者有更好的实现技术欢迎分享


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

相关文章
|
6天前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
6天前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
4天前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
5天前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
10 2
|
6天前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
13天前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
32 4
|
16天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
17 1
|
18天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
4天前
|
安全 测试技术 持续交付
云计算时代的软件开发与测试:高效、灵活、可扩展
云计算时代的软件开发与测试:高效、灵活、可扩展
|
7天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
36 3

热门文章

最新文章