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

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


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

相关文章
|
1月前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
47 4
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
2月前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
13天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
108 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
26天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
148 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
46 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
2月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
53 2
|
2月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
57 2
|
2月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
225 2