CN110474900B - 一种游戏协议测试方法及装置 - Google Patents
一种游戏协议测试方法及装置 Download PDFInfo
- Publication number
- CN110474900B CN110474900B CN201910743542.0A CN201910743542A CN110474900B CN 110474900 B CN110474900 B CN 110474900B CN 201910743542 A CN201910743542 A CN 201910743542A CN 110474900 B CN110474900 B CN 110474900B
- Authority
- CN
- China
- Prior art keywords
- protocol
- game
- tested
- test
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/18—Protocol analysers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及计算机技术领域,尤其涉及一种游戏协议测试方法及装置,方法包括:针对待测试游戏,获取待测试游戏的各协议文件以及各协议文件的定义文档,每个协议文件中至少包括多个协议字段,每个协议文件的定义文档中至少包括多个协议字段的关联关系;根据各协议文件中的各协议字段构建针对不同协议的测试对象;针对每个测试对象,根据测试对象中的多个协议字段以及多个协议字段的关联关系从赋值集合中确定每个协议字段的赋值,得到赋值后的测试对象,其中赋值集合是根据不同的测试策略确定的;将各个赋值作为测试数据进行游戏协议测试。通过获取待测试游戏的所有协议文件,并能够更好的进行测试,不会产生无效的测试数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种游戏协议测试方法及装置。
背景技术
协议测试是针对通信协议进行的测试,协议测试能够实现一些常规测试中无法实现的流程。在进行协议测试时,包含对协议进行拦截、解析、篡改、发送等一系列的测试过程。
随着游戏的普及,需要针对游戏协议进行测试。一种进行游戏协议测试的方法是使用历史经验数据值进行测试,但是由于历史经验值获取的渠道较少,且主观性强,测试的效果不理想;另一种进行游戏协议测试的方法是,通过构建测试数据生成函数接口,生成大量测试数据。但是该方法主要应用于单机游戏的漏洞挖掘,并没有针对网络游戏的游戏协议测试方案。
基于上述内容,现有技术中不能提供一种适用于网络游戏的游戏协议测试方法。
发明内容
本申请实施例提供一种游戏协议测试方法及装置,为网络游戏提供一种游戏协议测试方法。
一方面,本申请实施例提供了一种游戏协议测试方法,包括:
针对待测试游戏,获取所述待测试游戏的各协议文件以及各协议文件的定义文档,所述待测试游戏的每个游戏功能至少对应一个协议文件,每个协议文件中至少包括多个协议字段,每个协议文件的定义文档中至少包括多个协议字段的关联关系;
根据各协议文件中的各协议字段构建针对不同协议的测试对象;
针对每个测试对象,根据所述测试对象中的多个协议字段以及多个协议字段的关联关系从赋值集合中确定每个协议字段的赋值,得到赋值后的测试对象,其中所述赋值集合是根据不同的测试策略确定的,所述测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的;
将各个赋值作为测试数据进行游戏协议测试。
一方面,本申请实施例提供了一种游戏协议测试装置,包括:
获取单元,用于针对待测试游戏,获取所述待测试游戏的各协议文件以及各协议文件的定义文档,所述待测试游戏的每个游戏功能至少对应一个协议文件,每个协议文件中至少包括多个协议字段,每个协议文件的定义文档中至少包括多个协议字段的关联关系;
测试对象构建单元,用于根据各协议文件中的各协议字段构建针对不同协议的测试对象;
赋值单元,用于针对每个测试对象,根据所述测试对象中的多个协议字段以及多个协议字段的关联关系从赋值集合中确定每个协议字段的赋值,得到赋值后的测试对象,其中所述赋值集合是根据不同的测试策略确定的,所述测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的;
测试单元,用于将各个赋值作为测试数据进行游戏协议测试。
可选的,所述获取单元,具体用于:
通过所述待测试游戏的开发文件获取所述待测试游戏的各协议文件的定义文档,通过读取所述待测试游戏的内存文件获取所述待测试游戏的各协议文件;
根据各协议文件的定义文档的字段标识,确定各协议文件中各协议字段的关联关系,遍历各协议文件中的字段,得到每个协议文件中至少包括的多个协议字段。
可选的,所述装置还包括:
测试策略制定单元,用于根据所述待测试游戏的各协议文件中各协议字段的数据类型确定各协议文件对应的数据类型测试策略,其中所述数据类型测试策略至少包括各协议文件对应的数据类型随机值子策略以及数据类型边界值子策略;
根据所述待测试游戏的通信方式确定所述待测试游戏服务器与所述待测试游戏客户端之间的通信攻击策略,所述攻击策略至少包括所述待测试游戏客户端到所述待测试游戏服务器的通信攻击子策略、所述待测试游戏服务器到所述待测试游戏客户端的通信攻击子策略、所述待测试游戏服务器到所述待测试游戏服务器的通信攻击子策略;
将各协议文件对应的数据类型测试策略以及所述待测试游戏服务器与所述待测试游戏客户端之间的通信攻击策略作为测试策略。
可选的,所述待测试游戏客户端到所述待测试游戏服务器的通信攻击子策略包括:
预埋通信攻击子策略、废弃通信攻击子策略。
可选的,所述测试单元具体用于:
将所述测试数据发送给待测试游戏客户端,并通过待测试游戏客户端将所述测试数据发送给待测试游戏服务器;
接收待测试游戏客户端反馈的测试响应,所述测试响应是所述待测试游戏服务器根据所述测试数据的运行结果确定的;
根据所述测试响应确定游戏协议测试结果。
一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述游戏协议测试方法的步骤。
一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行所述游戏协议测试方法的步骤。
在本申请实施例中,针对要进行游戏协议测试的待测试游戏,首先获取该待测试游戏的各个协议文件以各协议文件的定义文档,该待测试游戏具有多个功能,每个功能至少对应一个协议文件,获取的各个协议文件中,每个协议文件至少包括多个协议字段,而获取的各个协议文件定义文档中至少包括多个协议字段的关联关系;也就是说,通过获取各个协议文件,能够确定每个协议文件中的协议字段格式,通过的各个协议文件定义文档,能够确定每个协议文件中各个协议字段之间存在的关联关系;在确定了每个协议文件中的协议字段格式后,就可以构建针对不同协议的测试对象,这些测试对象与待测试游戏运行过程中的执行对象相同,通过确定测试对象,即确定了待测试游戏运行过程中的执行对象。
在本申请实施例中,能够通过获取待测试游戏的所有协议文件,这些协议可以是单机游戏的协议,也可以是网络游戏的协议,并根据所有的协议文件确定所有协议对应的测试对象,这些测试对象与协议匹配,能够更好的进行测试,不会产生无效的测试数据。
进一步地,在确定了测试对象后,还需要确定测试对象的赋值,以此来构成测试数据,在赋值过程中,是从赋值集合中确定了赋值,然后赋值给测试对象,而赋值集合是根据不同的测试策略确定的,而测试策略是至少根据待测试游戏的各协议文件中各协议字段的数据类型以及待测试游戏的通信方式确定的,也就是说,在本申请实施例中,根据待测试游戏的实际属性,即数据属性和通信方式属性能够制定不同的测试策略,不同的测试策略对应多个赋值,将多个赋值构建赋值集合进行赋值,能够模拟真实的游戏运行过程中可能遇到的故障以及攻击,提高测试的准确性。
综上所述,本申请实施例中的游戏协议测试方法,能够针对网络游戏进行游戏协议测试,并且根据游戏协议的字段格式来构建测试对象,避免了现有技术中产生的大量无效测试数据;在对测试对象进行赋值过程中,考虑到了游戏运行过程中主要存在的异常情况和攻击情况,制定了多种测试策略,并根据多种测试策略确定了赋值集合进行赋值,可以构造海量的测试数据,扩大游戏协议测试的覆盖面。
附图说明
图1为本发明实施例提供的一种应用场景架构图;
图2为本发明实施例提供的一种游戏协议测试方法的流程示意图;
图3为本发明实施例提供的一种协议字关联关系的示意图;
图4为本发明实施例提供的一种应用场景架构图;
图5为本发明实施例提供的一种游戏协议测试方法的流程示意图;
图6为本发明实施例提供的一种游戏协议测试装置的结构示意图;
图7为本发明实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面先对几个概念进行简单介绍:
软件测试,在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
模糊测试,是一种软件测试技术。通过自动或半自动生成的随机数据输入到一个程序中,并监视程序异常。模糊测试常常用于检测软件或计算机***的安全漏洞。
协议,本申请中指的待测试游戏客户端和待测试游戏服务器之间通信的数据格式。
打包,也叫序列化,将内存协议对象处理成连续的二进制流数据,用于网络传输。
解包,也叫反序列化,将二进制数据流按照协议结构的定义,解析成内存协议对象。
CS,client to server,客户端到服务器的通信。
SC,server to server,服务器到客户端的通信。
SS,server to server,服务器到服务器的通信。
在具体实践过程中,本申请的申请人发现,早期团队针对游戏协议测试方案中,针对协议字段的数据类型,逐个读取配置列表中的测试经验数据进行测试。但是由于配置列表中的测试经验数据的获取能力不足,主观性强,导致测试的准确性不高。
现有技术中还有一种游戏协议测试方案,是根据测试数据生成函数接口,生成大量测试数据。但是该测试方法主要应用于单机漏洞挖掘,联机应用只对常见的网站服务器做支持,没有针对联网游戏的游戏协议测试方案。
基于上述问题,本申请的申请人构思了一种游戏协议测试方法,通过获取待测试游戏的所有协议,构建与协议匹配的测试对象,通过测试对象的赋值,确定了测试数据,与现有技术相比,针对待测试游戏的各个协议文件,确定了与各个协议文件匹配的待测试对象,并在赋值过程中,根据待测试游戏的数据特征以及通信特征,制定不同的测试策略,可以构造海量的测试数据,扩大协议测试的覆盖面,并且构造的测试数据都是与待测试游戏的各协议文件匹配的测试对象,从而构建测试数据,测试数据能够通过待测试服务器的解包校验,相对于传统的模糊测试方案更加高效,能够发现更多的漏洞风险。
本申请实施例中的游戏协议测试方法可以应用于如图1所示的应用场景,在该应用场景中包括测试工具101、待测试游戏客户端102以及待测试游戏服务器103。其中测试工具101可以运行在待测试游戏客户端102中,也可以运行在其他终端中。测试工具101能够通过脚本注入,获取从待测试游戏客户端102中获取待测试游戏的各协议文件,并确定各协议文件中的字段,通过字段来构成测试对象,并通过赋值集合中的赋值来给测试对象进行赋值;在进行赋值的过程中,需要考虑各协议文件中字段的关联关系,所以测试工具101还能够获取各协议文件的定义文档,通过定义文档来确定个协议文件中字段的关联关系;测试工具101将各测试对象赋值后,将赋值作为测试数据发送给待测试游戏客户端102;待测试游戏客户端102执行测试数据,并在执行过程中与待测试游戏服务器103进行交互,接收待测试游戏服务器103返回的测试数据执行结果,并返回给测试工具101,测试工具101根据执行结果确定是否存在漏洞。
在本申请实施中,待测试游戏客户端102为游戏用户使用的电子设备,该电子设备可以是个人计算机、手机、平板电脑、笔记本等具有一定计算能力并且运行有即时通讯类软件及网站或者社交类软件及网站的计算机设备。各待测试游戏客户端102通过无线网络与游戏服务器103连接,待测试游戏服务器103是一台服务器或若干台服务器组成的服务器集群或云计算中心。
值得说明的是,本申请实施例中的架构图是为了更加清楚地说明本发明实施例中的技术方案,并不构成对本申请实施例提供的技术方案的限制,对于其它的应用场景架构和业务应用,本申请实施例提供的技术方案对于类似的问题,同样适用。
基于图1所示的应用场景图,本申请实施例提供了一种游戏协议测试方法,该方法的流程可以由游戏协议测试装置执行,如图2所示,包括以下步骤:
步骤S201,针对待测试游戏,获取所述待测试游戏的各协议文件以及各协议文件的定义文档,所述待测试游戏的每个游戏功能至少对应一个协议文件,每个协议文件中至少包括多个协议字段,每个协议文件的定义文档中至少包括多个协议字段的关联关系。
具体地,本申请实施例中,当需要确定某个游戏是否存在协议漏洞时,该游戏为待测试游戏,需要针对该待测试游戏确定测试数据。为了解决现有技术中的测试方案不能对联网游戏做支持,并且构造的大量数据无法通过游戏服务器的解包校验,导致测试数据无效的问题,本申请实施例首先需要确定待测试游戏能够执行的数据格式。
在本申请实施例中,首先获取待测试游戏的各协议文件来确定待测试游戏能够执行的数据格式,每个待测试游戏包括的协议文件的数量是根据待测试游戏的功能确定的,每个待测试游戏的功能至少对应一个协议文件,例如,待测试游戏的功能有4个,则协议文件的数量至少为4个。在本申请实施例中,协议文件指既可以指不同待测试游戏通用的协议标准文件,该协议标准文件为文本形式,也可以指协议定义,即将协议标准文件转为各待测试游戏的定义语言,不同的各待测试游戏的定义语言可以相同,也可以不同。
在本申请实施例中,待测试游戏的功能指的是用户在使用该待测试游戏时,能够使用到的功能,例如,在待测试游戏中的游戏功能,购买虚拟物品功能,聊天功能等。进一步地,待测试游戏的功能还可以包括预埋功能以及废弃功能,即待测游戏的功能中包括一些并没有展示给用户的功能,这些功能一部分是未上线功能,还有一些是认为功能展示的效果不理想,所以将这些功能下线。为了测试的全面性,还需要将这些未展示功能对应的协议进行测试。
在待测试游戏实际运行过程中,是通过各协议文件中的各字段以及各字段的值来实现待测试游戏的执行操作过程,所以在本申请实施例中,获取的待测试游戏的各协议文件中,每个协议文件中至少包括多个协议字段,这些协议字段之间可能存在关联关系,所以还需要确定这些协议字段的关联关系。
在本申请实施例中,通过遍历各协议文件的字段来确定各协议的结构,例如,遍历协议A,得到的遍历结果为字段a字段b字段c,则可以认为协议A的协议格式为abc。可选的,在本申请实施例中,可以使用递归的方法来确定各协议中的字段,即通过递归的方法,快速遍历各协议中的字段。
在本申请实施例中,在待测试游戏内存中保存的各协议文件只有程序语言的各字段的信息,没有各字段信息之间的关联性,所以在本申请实施例中,通过各协议文件的定义文档就能够确定各协议中协议字段的关联性。
可选的,在本发明实施例中,由于待测试游戏上线时,会将各协议文件的定义文档保存在待测试游戏的开发文件中,且在进行测试时,在获取待测试游戏时,就能够获取到待测试游戏的开发文件。
在读取待测试游戏的开发文件后,通过读取开发文件中的字段标识,就能够确定各协议字段的关联关系,例如,通过读取开发文件中的字段标识,可以构建如图3所示的树形结构,在图3中,标识A字段与标识B字段以及标识E字段有关联关系,标识A字段与标识B字段以及标识F字段有关联关系,标识A字段与标识B字段以及标识G字段有关联关系,标识A字段与标识C字段以及标识H字段有关联关系,标识A字段与标识D字段以及标识I字段有关联关系,标识A字段与标识D字段以及标识J字段有关联关系。
步骤S202,根据各协议文件中的各协议字段构建针对不同协议的测试对象。
具体的,在本申请实施例中,由于确定了各协议文件中各字段的结构,所以通过各协议字段的结构来确定针对不同协议的测试对象。也就是说,在本申请实施例中,首先构建的测试对象是与协议匹配的,不会产生无用测试数据。例如在本申请实施例中,确定的协议A的结构为字段abc,则用字段abc作为协议A的测试对象。
可选的,在本申请实施例中,可以并行针对每个协议的测试对象,也可以依次确定每个协议的测试对象。
步骤S203,针对每个测试对象,根据所述测试对象中的多个协议字段以及多个协议字段的关联关系从赋值集合中确定每个协议字段的赋值,得到赋值后的测试对象,其中所述赋值集合是根据不同的测试策略确定的,所述测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的。
具体的,在本申请实施例中,在确定了各协议字段后,还需要对各协议字段进行赋值,以便在执行测试过程中时,将这些赋值作为测试数据执行。
在本申请实施例中,根据各协议字段赋值时,还需要考虑赋值之间的关联关系,即协议字段的关联关系,例如如图3所示,标识A字段与标识B字段以及标识E字段有关联关系,则在对标识A字段进行赋值时,需要首先对标识E字段赋值,然后再对标识B字段赋值,最后对标识字段A进行赋值。
在本申请实施例中,对各标识字段进行赋值时,与现有技术中通过一个固定的赋值函数来确定赋值相比,通过不同的测试策略确定了赋值集合,在赋值集合中确定每个标识字段的赋值。
在本申请实施例中,测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的,也就是说,测试策略是根据各协议字段在执行过程中,赋值的数据类型以及各协议的通信特点确定的。
具体的,在本申请实施例中,各协议字段的数据类型既可以指的是各协议字段使用的数值的具体类型,例如单精度浮点型、整型、长整型、双精度浮点型等,也可以指的是各协议字段使用的数值的具体类型的具体范围,例如单精度浮点型的数值范围或者整型的数值范围等。
具体的,在本申请实施例中,各协议的通信特点指的是在使用各协议进行通信时会产生的协议特点,例如,通过待测试游戏客户端与待测试游戏服务器之间的通信特点,即CS通信,SC通信等能够确定出不同的赋值数据,还可以将错误的通信连接作为赋值数据,以便检测除了正常的通信之外,是否还存在错误通信产生的漏洞,能够更全面的进行漏洞检测。
一种可选的实施例中,根据待测试游戏的各协议文件中各协议字段的数据类型确定各协议文件对应的数据类型测试策略,其中数据类型测试策略至少包括各协议文件对应的数据类型随机值子策略以及数据类型边界值子策略,也就是说,对于各协议文件使用的数据类型以及数据类型的边界各自定义策略。
另一种可选的实施例中,根据待测试游戏的通信方式确定待测试游戏服务器与待测试游戏客户端之间的通信攻击策略,攻击策略至少包括待测试游戏客户端到待测试游戏服务器的通信攻击子策略、待测试游戏服务器到待测试游戏客户端的通信攻击子策略、待测试游戏服务器到待测试游戏服务器的通信攻击子策略,也就是说,对于待测试游戏客户端与待测试游戏服务器之间的通信特点制定各个不同的通信攻击策略。
将各协议文件对应的数据类型测试策略以及待测试游戏服务器与待测试游戏客户端之间的通信攻击策略作为测试策略。
在本申请实施例中,待测试游戏服务器到待测试游戏服务器的通信攻击子策略中还可以包括预埋通信攻击子策略以及废弃通信攻击子策略,也就是说,需要确定预埋功能对应的协议是否能够产生攻击漏洞,需要确定废弃功能对应的协议是否能够产生攻击漏洞。
一种可选的实施例中,如表1所示,本申请实施例中的测试策略具体包括:
表1
具体的,对上述部分策略进行解释,随机值策略指的是,在数据类型范围内的任一个值都可以作为赋值,例如,浮点型数据中的任一个值都是赋值集合中的值。
边界值策略指的是数据类型的上下限边界,这每个数据类型的上下线边界作为赋值集合中的值。
异常值主要分为两部分,一部分为游戏协议测试的经验值积累,比如:整型数据的超大值、浮点型数据的异常值、浮点型数据的正负无穷值等。另一部分为借鉴行业游戏协议测试工具的异常值库。
协议标识信息策略指的是不同的协议具有不同的表示信息,在对协议进行解析时,会识别协议的标识信息,如果待测试游戏对协议的标识信息和协议包体的匹配校验不严格,通过该策略,可以遍历测试所有CS、SC、SS协议。
SC协议策略指的是将待测试游戏服务器发送给客户端的协议数据,再重新发送给服务器处理,也就是说,通常是待测试游戏服务器向待测试游戏客户端发送协议数据,当存在漏洞时,即如果待测试游戏服务器逻辑校验不严格,处理该SC协议,可能导致服务器逻辑异常,所以用SC协议策略来确定是否存在这样的漏洞。
错误的通信连接策略是指待测试游戏客户端与待测试游戏服务器之间存在多个网络接口连接,比如:登录待测试游戏进入游戏大厅操作时,客户端是与大厅服务器存在网络连接;客户端进入副本战斗时,客户端与战斗服务器存在网络连接。不同网络接口处理的协议标识信息的范围是不同的,因此可以将相同的协议通过不同的网络接口发送给待测试游戏服务器处理,可能引发待测试游戏服务器逻辑异常,便于确定是否存在漏洞。
用户自定义字符串攻击策略,指的是用户自定义的一些字符串会导致待测试客户端异常,例如崩溃、僵死或者卡顿,用户自定义的字符串例如用户自定义的游戏对象的名称,一些用户自定义的字符串会导致待测试游戏客户端异常,所以需要用户自定义字符串攻击策略来确定赋值集合中的赋值,并进行测试。
在本申请实施例中,在确定了各协议字段以及各协议字段的关联性后,在赋值集合中选取赋值,作为各协议字段的赋值。一种可选的实施例中,可以在赋值集合中随机选取赋值作为各协议字段的赋值。
另一种可选的实施例中,确定赋值集合中的各个策略具有不同的权重,这些权重是根据各个策略测试的重要性确定的,可以在每次测试时进行调整。不同的策略对应的赋值是不同的,所以赋值集合中的赋值也是具有权重的,在进行赋值时,根据不同权重的赋值进行赋值。
例如,针对一个协议确定的测试对象中的字段为字段A,字段B以及字段C,需要对字段A、字段B以及字段C进行赋值,赋值集合中的赋值为a,b,c,其中a对应的策略权重为权重1,b对应的策略权重为权重2,c对应的策略权重为权重3,权重1大于权重2大于权重3,在进行赋值时,将a赋值给字段A,将b赋值给字段B,将c赋值给字段C。
步骤S204,将各个赋值作为测试数据进行游戏协议测试。
在对各协议的测试对象进行赋值后,将赋值作为测试数据进行游戏协议测试,具体的,在本申请实施例中,将测试数据发送给待测试游戏客户端,并通过待测试游戏客户端将测试数据发送给待测试游戏服务器;接收待测试游戏客户端反馈的测试响应,测试响应是待测试游戏服务器根据测试数据的运行结果确定的;根据测试响应确定游戏协议测试结果。
在本申请实施例中,测试响应可以是测试完成或者测试异常,一些赋值策略在测试异常时可以认为待测试游戏中存在异常,一些赋值策略在测试成功时可以认为待测试游戏中存在异常。例如,废弃/预埋协议策略对应的赋值作为测试数据进行测试,若测试响应为测试完成,则认为存在废弃/预埋协议漏洞。
在本申请实施例中,可以并行进行各协议对应的测试数据的测试,也可以逐个协议对应的测试数据进行测试。在针对一个协议对应的测试数据的测试时,可以遍历赋值集合中的所有赋值进行多次测试,并获取多次测试的测试响应,并根据测试响应确定测试结果,即判断待测试游戏是否存在漏洞。
为了更好的解释本申请实施例,下面结合具体的实施场景描述本申请实施例提供的一种游戏协议测试方法,在本申请中,测试工具为运行在待测试游戏客户端中的应用程序,待测试游戏客户端为个人电脑,为了便于描述,待测试游戏为游戏A,具体场景如图4所示,在图4中包括个人电脑和待测试游戏服务器,测试工具运行在个人电脑中。
在进行游戏协议测试时,首先在个人电脑后运行测试工具,通过待测试工具在个人电脑游戏A的存储位置获取了游戏A的所有协议,这些协议对应了游戏A的游戏操作功能,游戏交友功能以及游戏升级功能。同时,通过游戏A的开发文件获取了所有协议的协议字段的关联关系。通过递归算法将游戏A的所有协议的协议字段进行遍历,按照遍历的字段的格式,构建了针对每个协议的测试对象,这些测试对象与游戏A实际运行时的字段的格式是匹配的。
然后需要对游戏A的每个协议对应的测试对象进行赋值,在本申请实施例中,赋值集合中协议标识信息策略的权重最高,则在赋值时,首先选择协议标识信息策略对应的赋值,然后在进行赋值后,对游戏A进行测试。在测试后,获取测试响应,并根据测试响应确定游戏A中是否存在漏洞。
上述测试过程使用如图5所示的流程图进行说明,图5中具体描述了上述测试过程中,测试工具、游戏A客户端以及游戏A服务器之间的交互过程。
基于上述实施例,参阅图6所示,本发明实施例提供一种游戏协议测试装置600,包括:
获取单元601,用于针对待测试游戏,获取所述待测试游戏的各协议文件以及各协议文件的定义文档,所述待测试游戏的每个游戏功能至少对应一个协议文件,每个协议文件中至少包括多个协议字段,每个协议文件的定义文档中至少包括多个协议字段的关联关系;
测试对象构建单元602,用于根据各协议文件中的各协议字段构建针对不同协议的测试对象;
赋值单元603,用于针对每个测试对象,根据所述测试对象中的多个协议字段以及多个协议字段的关联关系从赋值集合中确定每个协议字段的赋值,得到赋值后的测试对象,其中所述赋值集合是根据不同的测试策略确定的,所述测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的;
测试单元604,用于将各个赋值作为测试数据进行游戏协议测试。
可选的,所述获取单元601,具体用于:
通过所述待测试游戏的开发文件获取所述待测试游戏的各协议文件的定义文档,通过读取所述待测试游戏的内存文件获取所述待测试游戏的各协议文件;
根据各协议文件的定义文档的字段标识,确定各协议文件中各协议字段的关联关系,遍历各协议文件中的字段,得到每个协议文件中至少包括的多个协议字段。
可选的,所述赋值单元603具体用于:
按照赋值集合中每个赋值的权重,在赋值集合中依次选择赋值作为各协议字段的赋值,其中每个赋值的权重是根据测试策略的权重确定的。
可选的,所述装置还包括:
测试策略制定单元606,用于根据所述待测试游戏的各协议文件中各协议字段的数据类型确定各协议文件对应的数据类型测试策略,其中所述数据类型测试策略至少包括各协议文件对应的数据类型随机值子策略以及数据类型边界值子策略;
根据所述待测试游戏的通信方式确定所述待测试游戏服务器与所述待测试游戏客户端之间的通信攻击策略,所述攻击策略至少包括所述待测试游戏客户端到所述待测试游戏服务器的通信攻击子策略、所述待测试游戏服务器到所述待测试游戏客户端的通信攻击子策略、所述待测试游戏服务器到所述待测试游戏服务器的通信攻击子策略;
将各协议文件对应的数据类型测试策略以及所述待测试游戏服务器与所述待测试游戏客户端之间的通信攻击策略作为测试策略。
可选的,所述待测试游戏客户端到所述待测试游戏服务器的通信攻击子策略包括:
预埋通信攻击子策略、废弃通信攻击子策略。
可选的,所述测试单元604具体用于:
将所述测试数据发送给待测试游戏客户端,并通过待测试游戏客户端将所述测试数据发送给待测试游戏服务器;
接收待测试游戏客户端反馈的测试响应,所述测试响应是所述待测试游戏服务器根据所述测试数据的运行结果确定的;
根据所述测试响应确定游戏协议测试结果。
基于相同的技术构思,本申请实施例提供了一种计算机设备,如图7所示,包括至少一个处理器701,以及与至少一个处理器连接的存储器702,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中处理器701和存储器702之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前述的游戏协议测试方法中所包括的步骤。
其中,处理器701是计算机设备的控制中心,可以利用各种接口和线路连接终端设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,从而获得客户端地址。可选的,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器701可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行游戏协议测试方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种游戏协议测试方法,其特征在于,所述方法包括:
针对待测试游戏,获取所述待测试游戏的各协议文件以及各协议文件的定义文档,所述待测试游戏的每个游戏功能至少对应一个协议文件,每个协议文件中至少包括多个协议字段,每个协议文件的定义文档中至少包括多个协议字段的关联关系;
根据各协议文件中的各协议字段构建针对不同协议的测试对象;
针对每个测试对象,根据所述测试对象中的多个协议字段的关联关系,确定所述测试对象中的多个协议字段的赋值顺序;按照所述赋值顺序从赋值集合中随机选取赋值作为各个协议字段的赋值,或者按照所述赋值顺序和赋值集合中每个赋值的权重,在赋值集合中依次选择赋值作为各协议字段的赋值,得到赋值后的测试对象,其中,每个赋值的权重是根据测试策略的权重确定的,所述赋值集合是根据不同的测试策略确定的,所述测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的;
将各个赋值作为测试数据进行游戏协议测试。
2.根据权利要求1所述的方法,其特征在于,所述获取所述待测试游戏的各协议文件以及各协议文件的定义文档,具体包括:
通过所述待测试游戏的开发文件获取所述待测试游戏的各协议文件的定义文档,通过读取所述待测试游戏的内存文件获取所述待测试游戏的各协议文件;
根据各协议文件的定义文档的字段标识,确定各协议文件中各协议字段的关联关系,遍历各协议文件中的字段,得到每个协议文件中至少包括的多个协议字段。
3.根据权利要求1所述的方法,其特征在于,所述测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的,包括:
根据所述待测试游戏的各协议文件中各协议字段的数据类型确定各协议文件对应的数据类型测试策略,其中所述数据类型测试策略至少包括各协议文件对应的数据类型随机值子策略以及数据类型边界值子策略;
根据所述待测试游戏的通信方式确定所述待测试游戏服务器与所述待测试游戏客户端之间的通信攻击策略,所述攻击策略至少包括所述待测试游戏客户端到所述待测试游戏服务器的通信攻击子策略、所述待测试游戏服务器到所述待测试游戏客户端的通信攻击子策略、所述待测试游戏服务器到所述待测试游戏服务器的通信攻击子策略;
将各协议文件对应的数据类型测试策略以及所述待测试游戏服务器与所述待测试游戏客户端之间的通信攻击策略作为测试策略。
4.根据权利要求3所述的方法,其特征在于,所述待测试游戏客户端到所述待测试游戏服务器的通信攻击子策略包括:
预埋通信攻击子策略、废弃通信攻击子策略。
5.根据权利要求1所述的方法,其特征在于,所述将各个赋值作为测试数据进行游戏协议测试,包括:
将所述测试数据发送给待测试游戏客户端,并通过待测试游戏客户端将所述测试数据发送给待测试游戏服务器;
接收待测试游戏客户端反馈的测试响应,所述测试响应是所述待测试游戏服务器根据所述测试数据的运行结果确定的;
根据所述测试响应确定游戏协议测试结果。
6.一种游戏协议测试装置,其特征在于,包括:
获取单元,用于针对待测试游戏,获取所述待测试游戏的各协议文件以及各协议文件的定义文档,所述待测试游戏的每个游戏功能至少对应一个协议文件,每个协议文件中至少包括多个协议字段,每个协议文件的定义文档中至少包括多个协议字段的关联关系;
测试对象构建单元,用于根据各协议文件中的各协议字段构建针对不同协议的测试对象;
赋值单元,用于针对每个测试对象,根据所述测试对象中的多个协议字段的关联关系,确定所述测试对象中的多个协议字段的赋值顺序;按照所述赋值顺序从赋值集合中随机选取赋值作为各个协议字段的赋值,或者按照所述赋值顺序和赋值集合中每个赋值的权重,在赋值集合中依次选择赋值作为各协议字段的赋值,得到赋值后的测试对象,其中,每个赋值的权重是根据测试策略的权重确定的,所述赋值集合是根据不同的测试策略确定的,所述测试策略是至少根据所述待测试游戏的各协议文件中各协议字段的数据类型以及所述待测试游戏的通信方式确定的;
测试单元,用于将各个赋值作为测试数据进行游戏协议测试。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~5任一权利要求所述方法的步骤。
8.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~5任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910743542.0A CN110474900B (zh) | 2019-08-13 | 2019-08-13 | 一种游戏协议测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910743542.0A CN110474900B (zh) | 2019-08-13 | 2019-08-13 | 一种游戏协议测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110474900A CN110474900A (zh) | 2019-11-19 |
CN110474900B true CN110474900B (zh) | 2021-11-02 |
Family
ID=68510575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910743542.0A Active CN110474900B (zh) | 2019-08-13 | 2019-08-13 | 一种游戏协议测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110474900B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948232A (zh) * | 2019-12-10 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 一种游戏协议测试方法、装置、电子设备和存储介质 |
CN111309620B (zh) * | 2020-02-24 | 2024-05-07 | 腾讯科技(成都)有限公司 | 一种游戏协议测试方法、装置、电子设备和存储介质 |
CN113765862B (zh) * | 2020-06-05 | 2024-02-09 | 腾讯科技(成都)有限公司 | 游戏协议测试的方法、装置、设备及计算机可读存储介质 |
CN112565026B (zh) * | 2021-02-20 | 2021-06-04 | 支付宝(杭州)信息技术有限公司 | 测试帧的生成方法、装置及设备 |
CN113709126A (zh) * | 2021-08-18 | 2021-11-26 | 深圳开源互联网安全技术有限公司 | 网络协议安全模糊测试方法、装置、设备以及存储介质 |
CN114944997B (zh) * | 2022-03-24 | 2024-02-20 | 浙江大华技术股份有限公司 | 一种协议检测方法、协议检测装置和计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035857A (zh) * | 2010-12-31 | 2011-04-27 | 北京像素软件科技股份有限公司 | 一种模拟多个游戏角色的群体自组织行为的方法 |
CN102819486A (zh) * | 2011-06-09 | 2012-12-12 | 腾讯科技(深圳)有限公司 | 一种网络产品自动化测试***和测试方法 |
CN103593294A (zh) * | 2013-11-21 | 2014-02-19 | 福建天晴数码有限公司 | 网络游戏性能测试方法及*** |
US8868646B2 (en) * | 2010-12-21 | 2014-10-21 | Electronics And Telecommunications Research Institute | Apparatus and method for generating virtual game clients |
CN104536888A (zh) * | 2014-12-24 | 2015-04-22 | 网易(杭州)网络有限公司 | 移动设备的游戏测试方法与*** |
CN105721239A (zh) * | 2016-01-18 | 2016-06-29 | 网易(杭州)网络有限公司 | 游戏测试方法、装置及游戏*** |
CN108255727A (zh) * | 2018-01-18 | 2018-07-06 | 网易(杭州)网络有限公司 | 数据接收、发送方法及装置,测试***,存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091968A1 (en) * | 2001-01-08 | 2002-07-11 | Donald Moreaux | Object-oriented data driven software GUI automated test harness |
US20080222463A1 (en) * | 2007-03-05 | 2008-09-11 | Interdigital Technology Corporation | Apparatus, method and product for testing communications components |
-
2019
- 2019-08-13 CN CN201910743542.0A patent/CN110474900B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8868646B2 (en) * | 2010-12-21 | 2014-10-21 | Electronics And Telecommunications Research Institute | Apparatus and method for generating virtual game clients |
CN102035857A (zh) * | 2010-12-31 | 2011-04-27 | 北京像素软件科技股份有限公司 | 一种模拟多个游戏角色的群体自组织行为的方法 |
CN102819486A (zh) * | 2011-06-09 | 2012-12-12 | 腾讯科技(深圳)有限公司 | 一种网络产品自动化测试***和测试方法 |
CN103593294A (zh) * | 2013-11-21 | 2014-02-19 | 福建天晴数码有限公司 | 网络游戏性能测试方法及*** |
CN104536888A (zh) * | 2014-12-24 | 2015-04-22 | 网易(杭州)网络有限公司 | 移动设备的游戏测试方法与*** |
CN105721239A (zh) * | 2016-01-18 | 2016-06-29 | 网易(杭州)网络有限公司 | 游戏测试方法、装置及游戏*** |
CN108255727A (zh) * | 2018-01-18 | 2018-07-06 | 网易(杭州)网络有限公司 | 数据接收、发送方法及装置,测试***,存储介质 |
Non-Patent Citations (3)
Title |
---|
An Automated Negotiation Protocol Based On Game Theory;Chenming Li;《http://www.scirp.org/journal/cweee》;20140731;全文 * |
游戏协议测试理论;佚名;《https://blog.csdn.net/SR0ad/article/details/8253126》;20121203;全文 * |
网络游戏闯关***的设计与实现;阳福林;《中国优秀硕士学位论文全文数据库信息科技辑》;20160815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110474900A (zh) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN109347787B (zh) | 一种身份信息的识别方法及装置 | |
CN108427731B (zh) | 页面代码的处理方法、装置、终端设备及介质 | |
CN113489713B (zh) | 网络攻击的检测方法、装置、设备及存储介质 | |
CN107329894B (zh) | 应用程序***测试方法、装置及电子设备 | |
CN110866258B (zh) | 快速定位漏洞方法、电子装置及存储介质 | |
CN106528393A (zh) | 一种WebService的Mock测试的方法及装置 | |
CN111338692B (zh) | 基于漏洞代码的漏洞分类方法、装置及电子设备 | |
CN111414402A (zh) | 一种日志威胁分析规则生成方法及装置 | |
US9026612B2 (en) | Generating a custom parameter rule based on a comparison of a run-time value to a request URL | |
CN110287700B (zh) | 一种iOS应用安全分析方法及装置 | |
CN114139161A (zh) | 一种批量检测漏洞的方法、装置、电子设备及介质 | |
CN106709335B (zh) | 漏洞检测方法和装置 | |
WO2021183382A1 (en) | Graph-based method for inductive bug localization | |
CN117435480A (zh) | 一种二进制文件检测方法、装置、电子设备及存储介质 | |
CN110766402B (zh) | 交易顺序依赖漏洞检测方法、***、电子装置及存储介质 | |
US10931693B2 (en) | Computation apparatus and method for identifying attacks on a technical system on the basis of events of an event sequence | |
CN111046393A (zh) | 漏洞信息上传方法、装置、终端设备及存储介质 | |
CN115643044A (zh) | 数据处理方法、装置、服务器及存储介质 | |
CN110674491B (zh) | 用于安卓应用的实时取证的方法、装置和电子设备 | |
CN111681005A (zh) | 数据交互方法、装置和电子设备 | |
CN112363933A (zh) | 字段落表的自动化验证方法、装置、计算机设备及存储介质 | |
CN107122665B (zh) | 漏洞检测方法以及漏洞检测装置 | |
US11625318B2 (en) | System and method for identifying software behavior | |
CN112650679B (zh) | 一种测试校验方法、装置及计算机*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |