CN113630295B - 协议测试方法和装置 - Google Patents

协议测试方法和装置 Download PDF

Info

Publication number
CN113630295B
CN113630295B CN202110945459.9A CN202110945459A CN113630295B CN 113630295 B CN113630295 B CN 113630295B CN 202110945459 A CN202110945459 A CN 202110945459A CN 113630295 B CN113630295 B CN 113630295B
Authority
CN
China
Prior art keywords
protocol
copy
base class
class constructor
function
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
Application number
CN202110945459.9A
Other languages
English (en)
Other versions
CN113630295A (zh
Inventor
黄杨兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202110945459.9A priority Critical patent/CN113630295B/zh
Publication of CN113630295A publication Critical patent/CN113630295A/zh
Application granted granted Critical
Publication of CN113630295B publication Critical patent/CN113630295B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供一种协议测试方法和装置。该方法包括响应于第一游戏功能的触发事件,生成第一游戏功能对应的第一协议,并将第一协议发送至基类构造函数;调用基类构造函数对应的钩子函数从基类构造函数中拷贝第一协议得到第一副本协议,其中,钩子函数执行时截断基类构造函数的执行;调用还原函数恢复基类构造函数的执行;执行基类构造函数将第一协议发送至服务器;接收针对第一副本协议的修改操作,根据修改操作修改第一副本协议;将修改后的第一副本协议发送至基类构造函数,并执行基类构造函数将修改后的第一副本协议发送至服务器。本申请可以对游戏项目中想要抓取的协议进行准确抓取和修改。

Description

协议测试方法和装置
技术领域
本申请涉及游戏开发技术,尤其涉及一种协议测试方法和装置。
背景技术
在当前市面上众多的游戏开发引擎中,以Unity3d为例,目前客户端(包括PC端、主机、移动设备)所有的游戏中超过一半都是使用Unity创作的。在创建游戏项目后,需要对游戏项目进行测试才可以上线游戏。其中,对Unity3d游戏项目的协议测试是很重要的一项测试。
游戏项目的协议测试就是对客户端和服务器之间通信协议规则的测试。通信协议可以理解为客户端和服务器之间的交互纽带,协议测试就是对这一纽带的可靠性进行验证的手段。通信协议是双向的,游戏中既有客户端发送给服务器的协议,也有服务器返回给客户端的协议。而服务器对收到的协议一般是无法监测协议来源的,也就是说服务器在接收到任何匹配通信规则的协议请求后,就会根据协议请求对应的协议内容执行对应的逻辑。所以一些别有用心的玩家,他们会通过一些特殊手段让游戏客户端多次发送协议甚至尝试去破解并伪造协议,以欺骗服务器执行额外的游戏逻辑获得收益。所以必须要做好协议测试,保证服务器游戏逻辑的健壮和安全。
在对游戏项目进行协议测试时,测试人员需要找到想要测试的协议并对想要测试的协议进行修改和测试,以完善游戏项目。现有技术在寻找想要测试的协议时,一般是通过现有的WPE协议工具对通过客户端的网卡的所有协议进行抓取展示,由测试人员从WPE协议工具展示的所有协议中确定出游戏运行时想要测试的协议,再对协议进行修改后重新发送至服务器。这种确定想要测试的协议的方法取决于测试人员的能力,不可靠,如果抓取错误或者选取错误,都会导致协议修正错误。
因此,如何对游戏项目中想要测试的协议进行准确抓取和修改,仍然是值得研究的问题。
发明内容
本申请提供一种协议测试方法和装置,用以对游戏项目中想要测试的协议进行准确抓取和修改。
一方面,本申请提供一种协议测试方法,应用于客户端,包括:
响应于第一游戏功能的触发事件,生成所述第一游戏功能对应的第一协议,并将所述第一协议发送至基类构造函数;
调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议,其中,所述钩子函数执行时截断所述基类构造函数的执行;
调用还原函数恢复所述基类构造函数的执行;
执行所述基类构造函数将所述第一协议发送至服务器;
接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议;
将修改后的所述第一副本协议发送至基类构造函数,并执行所述基类构造函数将修改后的所述第一副本协议发送至所述服务器。
其中一个实施例中,还包括:
根据所述第一副本协议中协议参数的类型确定所述第一副本协议的显示类型,并基于所述第一副本协议的显示类型显示所述第一副本协议,所述显示类型包括整型、浮点型和字符串;
所述接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议包括:
以所述第一副本协议的显示类型显示所述第一副本协议;
接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议。
其中一个实施例中,所述接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议包括:
当所述第一副本协议以对应的显示类型显示时,获取所述修改操作输入的修改参数,所述修改参数的显示类型与所述第一副本协议的显示类型相同;
根据所述修改参数修改所述第一副本协议中的协议参数,得到修改后的所述第一副本协议。
其中一个实施例中,所述调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议包括:
接收协议抓取指令;
根据所述协议抓取指令调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议,得到所述第一副本协议。
其中一个实施例中,所述接收协议抓取指令包括:
显示协议抓取按钮;
响应所述协议抓取按钮的选中操作生成,所述协议抓取指令。
其中一个实施例中,还包括:
接收协议停止抓取指令;
根据所述协议停止抓取指令停止调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议。
其中一个实施例中,所述接收协议停止抓取指令包括:
显示协议停止抓取按钮;
响应所述协议停止抓取按钮的选中操作,生成所述协议停止抓取指令。
另一方面,本申请提供一种协议测试装置,包括:
协议生成模块,用于响应于第一游戏功能的触发事件,生成所述第一游戏功能对应的第一协议,并将所述第一协议发送至基类构造函数;
协议拷贝模块,用于调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议,其中,所述钩子函数执行时截断所述基类构造函数的执行;
函数执行模块,用于调用还原函数恢复所述基类构造函数的执行;
协议发送模块,用于执行所述基类构造函数将所述第一协议发送至服务器;
协议修改模块,用于接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议;
所述协议发送模块还用于将修改后的所述第一副本协议发送至基类构造函数,并执行所述基类构造函数将修改后的所述第一副本协议发送至所述服务器。
其中一个实施例中,还包括:
协议处理模块,用于根据所述第一副本协议中协议参数的类型确定所述第一副本协议的显示类型,并基于所述第一副本协议的显示类型显示所述第一副本协议,所述显示类型包括整型、浮点型和字符串;
所述协议修改模块还用于以所述第一副本协议的显示类型显示所述第一副本协议;
接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议。
另一方面,本申请提供一种计算机设备,包括存储器,处理器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述计算机设备执行如第一方面所述的协议测试方法。
另一方面,本申请提供一种计算机设备可读存储介质,所述计算机设备可读存储介质中存储有计算机设备执行指令,当所述指令被执行时,使得计算机设备执行如第一方面所述的协议测试方法。
另一方面,本申请提供一种计算机设备程序产品,包括计算机设备程序,所述计算机设备程序被处理器执行时实现如第一方面所述的协议测试方法。
本申请提供的方法可以由测试人员控制只抓取游戏中某个功能执行时的协议,无需在通过客户端网卡的所有协议中进行寻找。因此可以避免由于测试人员能力不足造成的协议抓取错误的情况发生,也避免了因为协议抓取错误导致的协议修改错误的情况发生。即本申请提供的方法可以对游戏项目中想要测试的协议进行准确抓取和修改。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本申请提供的协议测试方法的一种应用场景示意图。
图2为本申请的实施例一提供的协议测试方法的流程示意图。
图3为本申请的实施例一提供的协议测试方法中使用的模块示意图。
图4为本申请的实施例一提供的协议测试方法的另一个示意图。
图5为本申请实施例二提供的协议测试方法的流程示意图。
图6为本申请实施例三提供的协议测试装置的示意图。
图7为本申请的一个实施例提供的计算机设备的示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
对游戏项目的协议测试就是对客户端和服务器之间通信协议规则的测试。通信协议是双向的,游戏中既有客户端发送给服务器的协议,也有服务器返回给客户端的协议。由于服务器对收到的协议一般是无法监测协议来源的,也就是说服务器在接收到任何匹配通信规则的协议请求后,就会根据协议请求对应的协议内容执行对应的逻辑。所以一些别有用心的玩家,他们会通过一些特殊手段让游戏客户端多次发送协议甚至尝试去破解并伪造协议,以欺骗服务器执行额外的游戏逻辑获得收益。所以必须要做好协议测试,保证服务器游戏逻辑的健壮和安全。
下面以Unity3d游戏项目中商城购买道具为例,对客户端和服务器之间的通信协议的3种测试情况进行说明。
第一种情况:绕过客户端判断,直接向服务器发送正确协议,以测试服务器有没有相关的功能限制。
比如游戏商城中购买鞋子道具,游戏设计成限制玩家只能购买1次鞋子道具,当购买1次鞋子道具之后,不能再次购买鞋子道具。测试人员测试的时候,就可以在购买1次鞋子道具之后,再通过协议工具直接发送鞋子道具的购买协议,尝试进行再次购买,以进行协议测试。如果服务器具有相关的功能限制,测试人员点击购买按钮之后肯定是不会购买成功的。
如果服务器不具有相关的功能限制,那么服务器肯定会返回给客户端类似“购买成功”这样的信息。这样,玩家就额外买了一双鞋子道具,和游戏设计的限制购买1次鞋子道具的逻辑是违背的,这样就可以测试出客户端和服务器之间关于购买鞋子道具的协议出现了逻辑错误。
第二种情况:将修改了协议参数的协议发送给服务器,测试服务器是否会执行额外的游戏逻辑。
比如玩家在游戏商城中花费10元宝购买了鞋子道具,如果修改这条购买鞋子道具的协议中鞋子道具的相关参数,使得购买的鞋子道具变更为更加值钱的需要20元宝的武器道具。当服务器收到这条协议之后,判断10元宝是不能购买20元宝的武器道具的,返回购买失败,此时客户端和服务器之间关于购买鞋子道具的协议具有正确的逻辑。
如果服务器收到这条花费10元宝购买鞋子的协议,返回给客户端购买成功,那么玩家花费了10元宝就获得了更加值钱的20元宝的道具,这样也就测试出来了客户端和服务器之间关于购买鞋子道具的协议出现了错误。
第三种情况:一次发送很多条协议,可以测试服务器是否只能执行一条。
比如商城中花费20元宝购买武器道具的协议,一次性向服务器发送10条购买武器道具的协议。如果服务器收到10条购买武器道具协议之后,要么扣除10次的20元宝逻辑,再返回给客户端购买10件武器,或者只扣除20元宝返回客户端购买1件武器。证明客户端和服务器之间关于购买武器道具的协议具有正确的逻辑。
如果服务器收到这10条购买武器道具的协议之后都返回购买成功,那么玩家就只花费了20元宝却购买了10件武器道具,这和游戏设计逻辑不符,证明客户端和服务器之间关于购买武器道具的协议出现了错误。
在对Unity3d游戏项目进行协议测试时,测试人员需要找到想要测试的协议并对想要测试的协议进行修改和测试,以完善Unity3d游戏项目。例如测试上述的商城购买鞋子道具协议,测试人员就需要先找到鞋子道具的购买协议,然后进行修改后重发测试,保证游戏逻辑的健壮。现有技术在寻找想要测试的协议时,一般是通过现有的WPE协议工具对通过客户端的网卡的所有协议进行抓取和展示,由测试人员从WPE协议工具展示的所有协议中确定出游戏运行时想要测试的协议,再对协议进行修改后重新发送至服务器。这种确定想要测试的协议的方法取决于测试人员的能力,不可靠,如果抓取错误或者选取错误,都会导致无法进行协议测试。
因此,如何对游戏项目中想要测试的协议进行准确抓取和修改,仍然是值得研究的问题。
基于此,本申请提供一种协议测试方法和装置,在游戏项目的第一协议发送时使用的基类构造函数上设置钩子函数和还原函数。当游戏项目的第一协议发送时,调用钩子函数从该基类构造函数中拷贝该第一协议得到第一副本协议,对该第一副本协议进行修改后再发送给服务器。该钩子函数的调用是在检测到该游戏项目的第一游戏功能被触发后,直到该第一游戏功能完成后停止协议抓取。因此该钩子函数只抓取通过客户端网关的很少一部分协议,进而减少了测试人员从抓取的协议中筛选出想要测试的第一副本协议的难度和时间。从客户端角度讲,也就是实现了对游戏项目中想要测试的协议进行了准确抓取。
基于对游戏项目中想要测试的协议准确抓取,测试人员可以对想要测试的协议进行修改,避免了由于协议抓取过多、测试人员因为筛选难度过高无法准确找到想要测试的协议的情况发生。
本申请提供的协议测试方法应用于计算机设备,该计算机设备例如计算机设备、平板电脑、手机等。图1为本申请提供的协议测试方法的应用示意图,图中,计算机设备界面上展示了用于游戏项目的游戏功能界面,测试人员可以在游戏功能界面上操作以触发游戏项目的第一游戏功能。在触发游戏项目的第一游戏功能后,该计算机设备的界面上会显示抓取到的该第一游戏功能的第一协议的第一副本协议和很少部分的其他协议。该第一游戏功能的第一协议会继续发送至服务器。测试人员可以对该第一副本协议进行修改后,该计算机设备再将该第一副本协议发送至服务器。
请参见图2,本申请实施例一提供一种协议测试方法,包括:
S210,响应于第一游戏功能的触发事件,生成该第一游戏功能对应的第一协议,并将该第一协议发送至基类构造函数。
该基类构造函数为游戏项目底层协议的基类函数,游戏项目中的任何逻辑通讯协议都是通过调用底层协议基类构造函数实现协议发送的。
游戏项目的每个游戏功能都对应有协议,当该第一游戏功能被测试人员触发后,即该计算机设备生成该第一游戏功能的触发事件后,随即生成该第一游戏功能对应的第一协议,并将该第一协议发送至该基类构造函数。
该第一游戏功能例如以上第二种情况描述的购买鞋子道具,则该第一协议可以理解为购买鞋子道具的协议,该第一协议中携带鞋子道具的ID,比如1001。协议测试时候就可以将1001这个ID修改为代表武器的1002,以此测试该第一协议需要有花费元宝数和道具价值的判断逻辑,否则就出现花费10元宝购买了20元宝的武器道具的情况。
S220,调用该基类构造函数对应的钩子函数从该基类构造函数中拷贝该第一协议得到第一副本协议,其中,该钩子函数执行时截断该基类构造函数的执行。
该钩子函数和下文描述的还原函数均是MonoHook技术中常用的函数。在将该钩子函数、该还原函数与该基类构造函数关联设置时,测试人员获取该基类构造函数,将基类构造函数、钩子函数和还原函数这三个MethodInfo对象作为实例化参数创建MonoHook对象。
具体的,请参考图3,该计算机设备中可以设置初始化模块、协议内容模块和协议发送模块。该初始化模块用于初始化MonoHook对象,并用于在Unity3d游戏项目启动时执行MonoHook代码。在该MonoHook代码执行时,该初始化模块实例化三个MethodInfo对象(基类构造函数、钩子函数和还原函数),创建MonoHook对象。由此完成该钩子函数、该还原函数与该基类构造函数关联。该协议内容模块用于在调用该钩子函数时对该第一协议和该第一协议的内容进行保存,即保存该第一协议的协议ID(Identification)和该第一协议传递的协议参数,以生成该第一副本协议。该协议发送模块可以调用该基类构造函数,完成协议的发送。
由此,该钩子函数可以通过该协议内容模块拷贝该基类构造函数接收到的协议。当该基类构造函数接收到该第一协议时,该钩子函数从该基类构造函数中拷贝该第一协议得到第一副本协议,该第一副本协议和该第一协议的内容相同。
可选的,如图3所示,该计算机设备中还设置有开关模块。该计算机设备中的开关模块可以接收协议抓取指令,再根据该协议抓取指令调用该基类构造函数对应的钩子函数从该基类构造函数中拷贝被第一协议,得到给第一副本协议。该协议抓取指令由测试人员输入至该计算机设备中,可选的,该计算机设备可以显示协议抓取按钮,响应该协议抓取按钮的选中操作,生成该协议抓取指令。
对应的,计算机设备中的该开关模块还可以接收协议停止抓取指令,再根据该协议停止抓取指令停止调用该基类构造函数对应的钩子函数从该基类构造函数中拷贝该第一协议得到该第一副本协议。可选的,该计算机设备可以显示协议停止抓取按钮,再响应该协议停止抓取按钮的选中操作,生成该协议停止抓取指令。
可选的,也可以在想要抓取的协议完成了对应的逻辑后就停止抓取协议。比如想要抓取的协议是在游戏商城购买道具的协议,只要购买成功了就可以停止抓取协议了。
S230,调用还原函数恢复该基类构造函数的执行。
当该钩子函数执行时,该钩子函数拷贝该第一协议得到该第一副本协议,但是该钩子函数执行时截断该基类构造函数的执行,此时就需要调用该还原函数恢复该基类构造函数的执行。即,该第一协议仍然会发送至该服务器。
S240,执行该基类构造函数将该第一协议发送至服务器。
如以上的相关描述,执行该基类构造函数可以将该第一协议发送至该服务器。
S250,接收针对该第一副本协议的修改操作,根据该修改操作修改该第一副本协议。
该修改操作由测试人员直接输入至该计算机设备,用于修改该第一副本协议中的相关参数。在进行该第一副本协议的相关参数修改时,该第一副本协议可以是以整型、或浮点型、或字符串等简单的形式显示,以利于测试人员的修改。
S260,将修改后的该第一副本协议发送至基类构造函数,并执行该基类构造函数将修改后的该第一副本协议发送至该服务器。
在得到修改后的该第一副本协议后,将该修改后的第一副本协议发送至该基类构造函数,当该基类构造函数执行时将修改后的第一副本协议发送至该服务器。
为了更便于理解本实施例步骤S210至步骤S250的执行,请参见以下对于图4的相关描述。图4中,当客户端将该第一协议发送至该基类构造函数时,调用钩子函数对该第一协议进行拷贝得到该第一副本协议。调用还原函数恢复该基类构造函数的执行,仍然将该第一协议发送至该服务器。该第一副本协议被修改后又调用该基类构造函数将修改后的该第一副本协议发送至该服务器。可选的,如图4所示,还可以设置Unity编辑器,该Unity编辑器可以实现和图3中所示的该开关模块相同的功能。
本实施例提供的协议测试方法可以在游戏项目的第一游戏功能被触发后调用基类构造函数对应的钩子函数对该第一游戏功能对应的第一协议进行拷贝。在基于测试人员对该第一副本协议的修改操作修改该第一副本协议后,再将修改后的该第一副本协议发送至该服务器。由此,该服务器对修改后的该第一副本协议进行响应,修改了之前对错误协议的响应造成的错误游戏逻辑,使得该服务器针对游戏项目的游戏逻辑是正确和安全的。除此之外,该钩子函数的调用是在检测到该游戏项目的第一游戏功能被触发后,因此该钩子函数不会抓取所有时段通过该基类构造函数的协议,而只从该第一游戏功能被触发后抓取该第一游戏功能对应的第一协议及少部分的其他协议,直到该第一游戏功能完成后停止协议抓取。
由此,本申请提供的协议测试方法实现了对游戏项目中的协议准确抓取。即只抓取通过客户端网关的协议中与该第一游戏功能对应的协议和少部分的其他协议,使得测试人员只需要在很少的协议中便可以确定出想要测试的协议。本申请提供的协议测试方法可以避免由于测试人员能力不足造成的协议抓取错误的情况发生,也避免了因为协议抓取错误导致的协议修改错误的情况发生。
请参见图5,本申请实施例二在实施例一的基础上提供一种协议测试方法,包括:
S510,响应于第一游戏功能的触发事件,生成该第一游戏功能对应的第一协议,并将该第一协议发送至基类构造函数。
S520,调用该基类构造函数对应的钩子函数从该基类构造函数中拷贝该第一协议得到第一副本协议,其中,该钩子函数执行时截断该基类构造函数的执行。
S530,调用还原函数恢复该基类构造函数的执行。
S540,执行该基类构造函数将该第一协议发送至服务器。
关于步骤S510至步骤S540的相关描述可以参考实施例一中关于步骤S210至步骤S240的相关描述,此处不再赘述。
S550,根据该第一副本协议中协议参数的类型确定该第一副本协议的显示类型,并基于该第一副本协议的显示类型显示该第一副本协议,该显示类型包括整型、浮点型和字符串。
在该协议内容模块保存该第一协议的协议内容得到该第一副本协议后,可以对该第一副本协议的协议内容进行解析,确定出该第一副本协议中每个协议参数的类型。根据该第一副本协议中每个协议参数的类型确定出每个协议参数对应的显示类型,将该第一副本协议转化为测试人员可以直观识别的整型、浮点型、字符串。
其中,整型指的是以数值形式展示的数据,例如充值10元时展示数字10。浮点型指的是以小数形式展示的数据,例如5.789就是一个浮点型数据。字符串是由数字、字母、下划线组成的一串字符。
该计算机设备中可以预先设置协议参数的类型与对应的显示类型之间的映射关系,例如设置金币充值协议对应的显示类型为整型,以数值形式展示充值的金额为10元。
S560,以该第一副本协议的显示类型显示该第一副本协议。
现有技术中的WPE协议工具只能将抓取到的协议以二进制数据或十六进制数据进行显示,二进制数据和十六进制数据很难修改,测试人员经常会修改到错误的协议参数,修改错误会导致协议发送失败。而整型、浮点型和字符串都是容易直观识别和修改的显示类型,因此以整型、浮点型或字符串显示该第一副本协议有利于测试人员直观得确定出该第一副本协议,也有利于直接对该第一副本协议进行修改。
例如,在以上描述的以10元宝购买鞋子道具的例子中,购买鞋子道具的协议中协议参数是鞋子道具的ID,是整数,显示后为1001。测试人员可以将1001修改为1002,而1002可能就代表了武器道具。
S570,接收针对该第一副本协议的修改操作,根据该修改操作修改该第一副本协议。
参考步骤S560中的相关描述,测试人员对该第一副本协议的修改是对以整型、或浮点型、或字符串显示的协议参数的直接修改。具体的,当该第一副本协议以对应的显示类型显示时,获取该修改操作输入的修改参数,根据该修改参数修改该第一副本协议中的协议参数,得到修改后的该第一副本协议。其中,该修改参数的显示类型与该第一副本协议的显示类型相同。
在根据该修改参数修改该第一副本协议中的协议参数后,对修改后的协议参数进行类型封装,形成修改后的第一副本协议。其中,类型封装可以理解为是将修改后的协议参数转换为不用于显示的协议形式。
S580,将修改后的该第一副本协议发送至基类构造函数,并执行该基类构造函数将修改后的该第一副本协议发送至该服务器。
关于步骤S580的相关描述可以参考步骤S260的相关描述,此处不再赘述。
综上,本实施例提供的该协议测试方法以整型、或浮点型、或字符串的形式显示该第一副本协议,使得测试人员可以更直观得确定出该第一副本协议,也便于测试人员基于整型、或浮点型、或字符串的形式对该第一副本协议进行修改。与现有技术中WPE协议工具只能以二进制形式或十六进制形式显示通过客户端网关的所有协议的方法相比,本实施例提供的该协议测试方法使得协议显示更直观,更便于修改,可以进一步避免因测试人员能力不足造成的无法确定所需要测试的协议和修改协议失误等问题的发生。
请参见图6,本申请实施例三还提供一种协议测试装置10,应用于客户端,包括:
协议生成模块11,用于响应于第一游戏功能的触发事件,生成该第一游戏功能对应的第一协议,并将该第一协议发送至基类构造函数;
协议拷贝模块12,用于调用该基类构造函数对应的钩子函数从该基类构造函数中拷贝该第一协议得到第一副本协议,其中,该钩子函数执行时截断该基类构造函数的执行;
函数执行模块13,用于调用还原函数恢复该基类构造函数的执行;
协议发送模块14,用于执行该基类构造函数将该第一协议发送至服务器;
协议修改模块15,用于接收针对该第一副本协议的修改操作,根据该修改操作修改该第一副本协议。
该协议发送模块还用于将修改后的该第一副本协议发送至基类构造函数,并执行该基类构造函数将修改后的该第一副本协议发送至该服务器。
协议处理模块16,用于根据该第一副本协议中协议参数的类型确定该第一副本协议的显示类型,并基于该第一副本协议的显示类型显示该第一副本协议,该显示类型包括整型、浮点型和字符串;
该协议修改模块15还用于以该第一副本协议的显示类型显示该第一副本协议;接收针对该第一副本协议的修改操作,根据该修改操作修改该第一副本协议。
该协议修改模块15还用于当该第一副本协议以对应的显示类型显示时,获取该修改操作输入的修改参数,该修改参数的显示类型与该第一副本协议的显示类型相同;根据该修改参数修改该第一副本协议中的协议参数,得到修改后的该第一副本协议。
该协议拷贝模块12还可以接收协议抓取指令;根据该协议抓取指令调用该基类构造函数对应的钩子函数从该基类构造函数中拷贝该第一协议,得到该第一副本协议。
该协议拷贝模块12还可以显示协议抓取按钮;响应该协议抓取按钮的选中操作生成,该协议抓取指令。
该协议处理模块16还用于接收停止抓取指令;根据该协议停止抓取指令停止调用该基类构造函数对应的钩子函数从该基类构造函数中拷贝该第一协议得到第一副本协议。
该协议处理模块16还用于显示协议停止抓取按钮;响应该协议停止抓取按钮的选中操作,生成该协议停止抓取指令。
请参见图7,本申请实施例四还提供一种计算机设备20,包括存储器21,处理器22和收发器23,该存储器21用于存储指令,该收发器23用于和其他设备通信,该处理器22用于执行该存储器21中存储的指令,以使该终端设备20执行如上实施例一和实施例二提供的协议测试方法,具体实现方式和技术效果类似,这里不再赘述。
本申请还提供一种计算机设备可读存储介质,该计算机设备可读存储介质中存储有计算机设备执行指令,当该指令被执行时,使得计算机设备执行指令被处理器执行时用于实现如上实施例一至实施例二提供的该协议测试方法。
本申请还提供一种计算机设备程序产品,包括计算机设备程序,该计算机设备程序被处理器执行时,实现如上实施例一和实施例二提供的该协议测试方法,具体实现方式和技术效果类似,这里不再赘述。
需要说明的是,上述计算机设备可读存储介质可以是只读存储器(Read OnlyMemory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器。也可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机设备、平板设备、个人数字助理等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机设备软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台服务器设备(可以是手机,计算机设备,服务器,空调器,或者网络设备等)执行本申请各个实施例所描述的方法。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机设备程序产品的流程图和/或方框图来描述的。应理解可由计算机设备程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机设备程序指令到通用计算机设备、专用计算机设备、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机设备或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机设备程序指令也可存储在能引导计算机设备或其他可编程数据处理设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机设备程序指令也可装载到计算机设备或其他可编程数据处理设备上,使得在计算机设备或其他可编程设备上执行一系列操作步骤以产生计算机设备实现的处理,从而在计算机设备或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种协议测试方法,其特征在于,包括:
响应于第一游戏功能的触发事件,生成所述第一游戏功能对应的第一协议,并将所述第一协议发送至基类构造函数;
当所述基类构造函数接收到所述第一协议时,调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议,其中,所述钩子函数执行时截断所述基类构造函数的执行;
调用还原函数恢复所述基类构造函数的执行;
执行所述基类构造函数将所述第一协议发送至服务器;
接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议;
将修改后的所述第一副本协议发送至基类构造函数,并执行所述基类构造函数将修改后的所述第一副本协议发送至所述服务器;
所述方法,还包括:
在游戏项目启动时,将所述基类构造函数、所述钩子函数和所述还原函数作为实例化参数创建MonoHook对象,由此完成所述钩子函数、所述还原函数和所述基类构造函数的关联设置。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据所述第一副本协议中协议参数的类型确定所述第一副本协议的显示类型,并基于所述第一副本协议的显示类型显示所述第一副本协议,所述显示类型包括整型、浮点型和字符串;
所述接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议包括:
以所述第一副本协议的显示类型显示所述第一副本协议;
接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议。
3.根据权利要求2所述的方法,其特征在于,所述接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议包括:
当所述第一副本协议以对应的显示类型显示时,获取所述修改操作输入的修改参数,所述修改参数的显示类型与所述第一副本协议的显示类型相同;
根据所述修改参数修改所述第一副本协议中的协议参数。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议包括:
接收协议抓取指令;
根据所述协议抓取指令调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议,得到所述第一副本协议。
5.根据权利要求4所述的方法,其特征在于,所述接收协议抓取指令包括:
显示协议抓取按钮;
响应所述协议抓取按钮的选中操作,生成所述协议抓取指令。
6.根据权利要求4所述的方法,其特征在于,还包括:
接收协议停止抓取指令;
根据所述协议停止抓取指令停止调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议。
7.根据权利要求6所述的方法,其特征在于,所述接收协议停止抓取指令包括:
显示协议停止抓取按钮;
响应所述协议停止抓取按钮的选中操作,生成所述协议停止抓取指令。
8.一种协议测试装置,其特征在于,包括:
协议生成模块,用于响应于第一游戏功能的触发事件,生成所述第一游戏功能对应的第一协议,并将所述第一协议发送至基类构造函数;
协议拷贝模块,用于当所述基类构造函数接收到所述第一协议时,调用所述基类构造函数对应的钩子函数从所述基类构造函数中拷贝所述第一协议得到第一副本协议,其中,所述钩子函数执行时截断所述基类构造函数的执行;
函数执行模块,用于调用还原函数恢复所述基类构造函数的执行;
协议发送模块,用于执行所述基类构造函数将所述第一协议发送至服务器;
协议修改模块,用于接收针对所述第一副本协议的修改操作,根据所述修改操作修改所述第一副本协议;
所述协议发送模块还用于将修改后的所述第一副本协议发送至基类构造函数,并执行所述基类构造函数将修改后的所述第一副本协议发送至所述服务器;
初始化模块,用于在游戏项目启动时,将所述基类构造函数、所述钩子函数和所述还原函数作为实例化参数创建MonoHook对象,由此完成所述钩子函数、所述还原函数和所述基类构造函数的关联设置。
9.一种计算机设备,其特征在于,包括存储器,处理器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述计算机设备执行如权利要求1-7中任一项所述的协议测试方法。
10.一种计算机设备可读存储介质,其特征在于,所述计算机设备可读存储介质中存储有计算机设备执行指令,当所述指令被执行时,使得计算机设备执行如权利要求1-7中任一项所述的协议测试方法。
CN202110945459.9A 2021-08-17 2021-08-17 协议测试方法和装置 Active CN113630295B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110945459.9A CN113630295B (zh) 2021-08-17 2021-08-17 协议测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110945459.9A CN113630295B (zh) 2021-08-17 2021-08-17 协议测试方法和装置

Publications (2)

Publication Number Publication Date
CN113630295A CN113630295A (zh) 2021-11-09
CN113630295B true CN113630295B (zh) 2022-12-06

Family

ID=78386201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110945459.9A Active CN113630295B (zh) 2021-08-17 2021-08-17 协议测试方法和装置

Country Status (1)

Country Link
CN (1) CN113630295B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702764B1 (en) * 2004-01-30 2010-04-20 Cisco Technology, Inc. System and method for testing network protocols
CN104052628A (zh) * 2013-03-12 2014-09-17 腾讯科技(深圳)有限公司 协议包检测方法及协议包检测装置
CN106294094A (zh) * 2015-05-13 2017-01-04 腾讯科技(成都)有限公司 游戏服务器的测试方法、客户端、服务器及***
CN109499071A (zh) * 2018-12-06 2019-03-22 珠海西山居移动游戏科技有限公司 一种检测游戏服务器协议安全的测试方法及装置
CN112241356A (zh) * 2019-07-16 2021-01-19 腾讯科技(深圳)有限公司 一种页面测试方法、装置、设备及存储介质
US10979539B1 (en) * 2017-07-21 2021-04-13 State Farm Mutual Automobile Insurance Company Method and system of generating generic protocol handlers

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437734B2 (en) * 2003-08-12 2008-10-14 Hewlett-Packard Development Company, L.P. Propagating web transaction context into common object model (COM) business logic components
CN108614776B (zh) * 2018-05-04 2021-08-31 艺龙网信息技术(北京)有限公司 跨语言协议测试请求的动态构建方法和***

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702764B1 (en) * 2004-01-30 2010-04-20 Cisco Technology, Inc. System and method for testing network protocols
CN104052628A (zh) * 2013-03-12 2014-09-17 腾讯科技(深圳)有限公司 协议包检测方法及协议包检测装置
CN106294094A (zh) * 2015-05-13 2017-01-04 腾讯科技(成都)有限公司 游戏服务器的测试方法、客户端、服务器及***
US10979539B1 (en) * 2017-07-21 2021-04-13 State Farm Mutual Automobile Insurance Company Method and system of generating generic protocol handlers
CN109499071A (zh) * 2018-12-06 2019-03-22 珠海西山居移动游戏科技有限公司 一种检测游戏服务器协议安全的测试方法及装置
CN112241356A (zh) * 2019-07-16 2021-01-19 腾讯科技(深圳)有限公司 一种页面测试方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Chrome调试协议的Chromium浏览器V8引擎漏洞检测方法;秦梦远等;《智能计算机与应用》;20200201(第02期);全文 *

Also Published As

Publication number Publication date
CN113630295A (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
Wei et al. Taming android fragmentation: Characterizing and detecting compatibility issues for android apps
CN109492378B (zh) 一种基于设备识别码的身份验证方法、服务器及介质
US11315106B2 (en) Relaxed fraud detection for transactions using virtual transaction cards
WO2020019484A1 (zh) 一种模拟器识别方法、识别设备及计算机可读介质
CN109241709B (zh) 基于滑块验证码验证的用户行为识别方法及装置
WO2020019483A1 (zh) 一种模拟器识别方法、识别设备及计算机可读介质
CN111078554B (zh) 一种小程序调试方法、装置、设备及存储介质
WO2020019485A1 (zh) 一种模拟器识别方法、识别设备及计算机可读介质
CN110619210A (zh) 一种模拟器检测方法及***
CN110737887B (zh) 恶意代码检测方法、装置、电子设备及存储介质
CN109558313B (zh) 构建异常测试场景的方法及装置
CN104698919A (zh) 一种对智能终端进行验机的方法和装置
EP3769244A1 (en) A method and system for detecting and preventing issues in smart contracts based on historical behavior analysis
CN109657468B (zh) 病毒行为检测方法、装置及计算机可读存储介质
CN112437294B (zh) 身份隐藏功能的测试方法、装置、设备及存储介质
Xu et al. Guider: Gui structure and vision co-guided test script repair for android apps
CN112527674A (zh) Ai框架的安全评测方法、装置、设备及存储介质
WO2020192179A1 (zh) 一种基于iOS应用的安全检测方法、装置及***
CN113209630B (zh) 游戏应用的抓帧防御方法及装置、存储介质、计算机设备
CN113630295B (zh) 协议测试方法和装置
CN108197914B (zh) 一种信息获取方法、装置及服务器
CN110751486B (zh) 智能合约的重放举证方法、***、电子设备及存储介质
CN112612534A (zh) 应用启动方法、设备以及存储介质
CN112181521A (zh) 一种参数获取方法、装置、设备和介质
CN105162799A (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