CN110363009A - 应用程序安全测试方法、装置和计算机可读存储介质 - Google Patents

应用程序安全测试方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN110363009A
CN110363009A CN201910644821.1A CN201910644821A CN110363009A CN 110363009 A CN110363009 A CN 110363009A CN 201910644821 A CN201910644821 A CN 201910644821A CN 110363009 A CN110363009 A CN 110363009A
Authority
CN
China
Prior art keywords
request
request content
safety test
content
test
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.)
Pending
Application number
CN201910644821.1A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910644821.1A priority Critical patent/CN110363009A/zh
Publication of CN110363009A publication Critical patent/CN110363009A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种应用程序安全测试方法、装置、计算机可读存储介质和计算机设备,当检测到待测试应用程序发送目标请求时,拦截所述目标请求;通过预设的安全测试接口获取目标请求中的第一请求内容;根据第一请求内容进行显示;获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容;基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。通过安全测试接口获取待测试应用程序发送目标请求中的第一请求内容,并通过安全测试接口基于第二请求内容与应用程序服务器进行数据交互,对待测试应用程序进行安全测试,在应用程序安全测试的过程中,仅通过安全测试接口就可以完成安全测试。

Description

应用程序安全测试方法、装置和计算机可读存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种应用程序安全测试方法、装置、计算机可读存储介质和计算机设备。
背景技术
随着计算机技术领域的发展,通过Unity3D(一种游戏引擎)和IL2CPP技术(Unity3D的一种将IL代码翻译成本地代码并执行的技术)开发的游戏越来越多,而开发完成的游戏是很有必要进行安全测试的,以保证游戏的正常运行。
而使用IL2CPP技术开发的游戏,其原始c#代码已全被转为c++代码,c++代码经过编译已经变成了本地代码。针对本地代码的游戏测试,现有方案一般通过静态反汇编工具找到存在风险的函数,并通过c++函数hook(钩子)技术对该函数进行参数修改测试。
因此,针对某些复杂的测试用例,由于构造本地函数调用的成本极高,这些测试用例逻辑往往无法实现,安全测试的覆盖范围较低。
发明内容
基于此,有必要针对安全测试的覆盖范围较低的问题,提供一种应用程序安全测试方法、装置、计算机可读存储介质和计算机设备。
一种应用程序安全测试方法,包括:
当检测到待测试应用程序发送目标请求时,拦截所述目标请求;
通过预设的安全测试接口获取所述目标请求中的第一请求内容;
根据所述第一请求内容进行显示;
获取第二请求内容,所述第二请求内容是基于所述第一请求内容进行调整后的请求内容;
基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。
在其中一个实施例中,所述通过所述待测试应用程序的底层接口,查找实现反射机制的目标函数的函数地址,获得所述目标函数的函数地址的步骤,包括:
通过所述待测试应用程序的底层接口根据函数名、函数所在的类名或类所在的程序集名查找实现反射机制的目标函数的函数地址,获得所述目标函数的函数地址。
在其中一个实施例中,所述当检测到待测试应用程序发送目标请求时,拦截所述目标请求的步骤,包括:
通过钩子函数对待测试应用程序发送的目标请求进行检测,并对测到发送接口发送的目标请求进行拦截。
在其中一个实施例中,所述根据预设的数据转换方式对所述二进制数据流进行转换,获得第一请求内容的步骤,包括:
通过预设的所述安全测试接口调用反序列函数对所述二进制数据流进行转换,获得对象;
将所述对象打包成可读文本,所述可读文本中的内容包括第一请求内容。
在其中一个实施例中,所述通过预设的所述安全测试接口根据所述第二请求内容,创建新请求的步骤,包括:
通过预设的所述安全测试接口调用目标请求对应的请求发送函数;
根据所述第二请求内容构造所述请求发送函数的参数,获得实例;
根据所述实例获得新请求。
在其中一个实施例中,所述向应用程序服务器发送所述新请求,获得安全测试结果的步骤,包括:
向应用程序服务器发送所述新请求,使应用程序服务器根据所述新请求进行处理后,反馈处理结果;
根据所述处理结果,确定安全测试结果。
一种应用程序安全测试装置,包括:
请求拦截模块,用于当检测到待测试应用程序发送目标请求时,拦截所述目标请求;
第一请求内容获取模块,用于通过预设的安全测试接口获取所述目标请求中的第一请求内容;
第一请求内容显示模块,用于根据所述第一请求内容进行显示;
第二请求内容获取模块,用于获取第二请求内容,所述第二请求内容是基于所述第一请求内容进行调整后的请求内容;
测试模块,用于基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述方法的步骤。
上述应用程序安全测试方法、装置、计算机可读存储介质和计算机设备,当检测到待测试应用程序发送目标请求时,拦截所述目标请求;通过预设的安全测试接口获取目标请求中的第一请求内容;根据第一请求内容进行显示;获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容;基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。通过安全测试接口获取待测试应用程序发送目标请求中的第一请求内容,并通过安全测试接口基于第二请求内容与应用程序服务器进行数据交互,对待测试应用程序进行安全测试,在应用程序安全测试的过程中,仅通过安全测试接口就可以完成安全测试。
附图说明
图1为一个实施例中应用程序安全测试方法的应用环境图;
图2为一个实施例中应用程序安全测试方法的流程示意图;
图3为一个实施例中安全测试接口的部分接口界面示意图;
图4为一个实施例中第一请求内容的显示界面图;
图5为一个实施例中应用程序安全测试方法的交互示意图;
图6为一个实施例中应用程序安全测试方法的安全测试接口的框架图;
图7为一个实施例中应用程序安全测试装置的结构框图;
图8为另一个实施例中应用程序安全测试装置的结构框图;
图9为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中应用程序安全测试方法的应用环境图。参照图1,该应用环境涉及终端110及应用程序服务器120。终端110和应用程序服务器120通过网络连接。终端110在检测到待测试应用程序发送目标请求时,拦截目标请求;通过预设的安全测试接口获取目标请求中的第一请求内容;根据第一请求内容进行显示;获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容;基于第二请求内容与应用程序服务器120进行数据交互,获得安全测试结果。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。应用程序服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
如图2所示,在一个实施例中,提供了一种应用程序安全测试方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图2,该应用程序安全测试方法具体包括如下步骤:
步骤S220,当检测到待测试应用程序发送目标请求时,拦截目标请求。
其中,待测试应用程序指的是需要进行安全测试的应用程序,该应用程序可以是基于Unity3D编写的原始的c#代码,并使用IL2CPP技术执行的游戏程序,也可以是其他应用程序,只要是需要进行安全测试的应用程序都可以作为待测试应用程序。目标请求指终端运行的待测试应用程序,与应用程序服务器进行交互时,向应用程序服务器发送的请求,该目标请求可以是待测试应用程序与应用程序服务器进行交互时,向应用程序服务器发送的任何一个请求,也可以是待测试应用程序与应用程序服务器进行交互时,向应用程序服务器发送的特殊请求,比如购买游戏装备的请求等等。
在一个实施例中,当检测到待测试应用程序发送目标请求时,拦截目标请求的步骤,包括:通过钩子函数对待测试应用程序发送的目标请求进行检测,并对测到发送接口发送的目标请求进行拦截。
其中,钩子(hook)是一种计算机技术,在没有源码的情况下,通过汇编的跳转指令实现修改目标函数的执行流程。钩子函数指的是用以处理或过滤事件消息的程序,该钩子函数挂入待测试应用程序,用于监视待测试应用程序发送的目标请求,并拦截该目标请求。
步骤S240,通过预设的安全测试接口获取目标请求中的第一请求内容。
其中,预设的安全测试接口是基于待测试应用程序中开放的接口,获取到待测试应用程序中存在的反射函数,进行封装后获得的安全测试接口,安全测试接口可实现实例创建、函数调用、字段和属性的访问与修改等功能。第一请求内容可以是终端运行的待测试应用程序向应用程序服务器发送的参数等等。安全测试接口可以是待测试应用程序的一部分;也可以单独存在的安全测试接口,但可以实现对待测试应用程序的实例创建、函数调用、字段和属性的访问与修改等功能。
在一个实施例中,安全测试接口的生成方式包括:通过待测试应用程序的底层接口,查找实现反射机制的目标函数的函数地址,获得目标函数的函数地址;根据函数地址调用目标函数,并对目标函数进行封装,形成安全测试接口。
其中,底层接口指的是待测试应用程序中开放的接口,当待测试应用程序通过unity3d引擎开发后,采用IL2CPP执行时,该底层接口为待测试应用程序的IL2CPP底层接口。通过unity3d引擎开发待测试应用程序时,使用的是C#语言编写原代码,采用IL2CPP执行时将编写的原C#代码全转为C++代码。C#指的是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。C++是计算机程序设计语言,是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。反射机制是指程序可以访问、检测和修改它本身状态或行为的一种能力,目标函数指的是待测试应用程序中实现访问、检测和修改它本身状态或行为的函数,当该底层接口为IL2CPP底层接口时,目标函数为C++代码的函数。形成的安全测试接口可以对待测试应用程序逻辑进行操作,实现实例创建、函数调用、成员变量值修改等功能。可以采用C++语言封装目标函数,也可以采用C#语言封装目标函数。
在一个实施例中,通过待测试应用程序的底层接口,查找实现反射机制的目标函数的函数地址,获得目标函数的函数地址的步骤,包括:通过待测试应用程序的底层接口根据函数名、函数所在的类名、类所在的程序集名查找实现反射机制的目标函数的函数地址,获得所述目标函数的函数地址。
其中,底层接口可是进行程序集遍历、类成员遍历、原始C#函数查找和C++函数调用等功能,通过底层接口的程序集遍历、类成员遍历、原始C#函数查找功能,查找实现反射机制的目标函数的函数地址,找到与函数名、函数所在的类名或类所在的程序集名对应的函数,获得目标函数的函数地址。当底层接口为IL2CPP底层接口时,调用待测试应用程序的IL2CPP底层接口根据函数名、函数所在的类名或类所在的程序集名,查找实现反射机制的目标函数的函数地址,获得目标函数的函数地址。
在一个实施例中,根据函数地址调用目标函数,并对目标函数进行封装,形成安全测试接口的步骤,包括:根据函数地址调用目标函数,并采用C#语言对目标函数进行封装,形成安全测试接口。
其中,封装指的是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。采用C#语言对目标函数进行封装,形成安全测试接口,目标函数被封装后的安全测试接口如图3所示的安全测试接口部分接口显示图。通过将目标函数进行c#封装,不需要任何额外配置,成为易用性高的c#接口。
在一个实施例中,通过预设的安全测试接口获取目标请求中的第一请求内容的步骤,包括:通过预设的安全测试接口获取目标请求中的请求数据;当请求数据为二进制数据流时,根据预设的数据转换方式对所述二进制数据流进行转换,获得第一请求内容。
其中,目标请求中的请求数据可能是参数,也有可能是结构化数据通过序列化数据结构的协议序列化后的二进制数据流,当目标请求中的请求数据是参数,在传输该参数数据时,可以直接传输该参数,即获取到的参数即为第一请求内容。结构化数据在传输时,需要将结构化数据通过序列化数据结构的协议序列化后,获得对应的二进制数据流进行传输,则获取到的二进制数据流没有对应的数据转换方式进行数据转换,则无法得到正确的结构化数据,则,当目标请求中的请求数据是结构化数据通过序列化数据结构的协议序列化后的二进制数据流时,获取序列化数据结构的协议对应的数据转换方式对二进制数据流进行数据转换,将转化后获得的数据作为第一请求内容。二进制数据流指的是流动的是二进制数据。
在一个实施例中,根据预设的数据转换方式对二进制数据流进行转换,获得第一请求内容的步骤,包括:通过预设的安全测试接口调用反序列函数对二进制数据流进行转换,获得对象;将对象打包成可读文本,可读文本中的内容包括第一请求内容。
其中,反序列函数是用于对二进制数据流进行数据转换的函数。对象是该二进制数据流被数据转换后获得的数据中在内存上一段有意义的区域。可读文本指的是可以查看文本里面的内容的文本。如:终端运行的待测试应用程序与应用程序服务器进行交互时,是通过Protobuf协议(是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议)进行网络通信和数据存储的,在向应用程序服务器发送请求时,基于Protobuf协议对请求中的数据进行转换为二进制数据流,生成请求发送给应用程序服务器,则反序列函数基于Protobuf协议对应的协议结构文件对二进制数据流进行转换即可获得对应的对象。
步骤S260,根据第一请求内容进行显示。
其中,终端通过预设的安全测试接口获取目标请求中的第一请求内容后,将第一请求内容显示在终端界面上,用户可以看到目标请求中所请求的内容,如图4所示的显示第一请求内容的显示界面,在显示时,将第一请求内容中的数据进行解析,生成第一请求内容的显示界面。显示第一请求内容的终端可以是和执行待测试应用程序的终端是同一个终端,也可以是不同的终端。当不是同一个终端时,可以将第一请求内容发送至对应的终端,通过对应的终端进行显示。
在一个实施例中,根据第一请求内容进行显示的步骤,包括:将第一请求内容发送至安全测试服务器,使安全测试服务器将第一请求内容,转发至安全测试客户端进行解析后在对应的测试终端进行显示。
其中,安全测试服务器为安全测试平台对应的服务器,安全测试平台是对外开的应用程序安全测试平台。安全测试客户端是安全测试平台用户提供本地服务的程序。测试终端为安全测试客户端对应的终端。本申请的应用程序安全测试方法还可以与安全测试平台对接,可以基于安全测试平台的安全测试服务器接收第一请求内容,并通过安全测试服务器将第一请求内容转发给安全测试客户端进行解析后在对应的测试终端进行显示。测试终端与运行待测试应用程序的终端可以是同一个终端,也可以不是同一终端。
步骤S280,获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容。
其中,第二请求内容用户可以是用户基于第一请求内容进行调整后的内容,调整可以是修改原始参数等等。也可以是终端基于第一请求内容执行相应的调整函数进行调整后的内容。具体地,终端将第一请求内容显示在界面上,用户可以通过操作终端对界面上显示的内容进行修改,终端根据用户输入的内容,生成第二请求内容。当显示第一请求内容的终端是和执行待测试应用程序的终端是同一个终端时,直接获取用户输入的内容,生成第二请求内容,当显示第一请求内容的终端是和执行待测试应用程序的终端是不同一个终端时,用户在显示第一请求内容的终端输入修改内容,生成第二请求内容,发送至执行待测试应用程序的终端,执行待测试应用程序的终端接收第二请求内容。
在一个实施例中,获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容的步骤,包括:获取测试终端通过安全测试服务器转发的第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容。
其中,当应用程序安全测试方法与安全测试平台对接时,向安全测试平台的安全测试服务器获取第二请求内容。用户通过安全测试平台的安全测试客户端对应的测试终端显示第一请求内容,用户基于安全测试客户端对应的测试终端输入修改内容,生成第二请求内容,在安全测试客户端获取到第二请求内容后发送给安全测试平台的安全测试服务器,由安全测试服务器将第二请求内容发送给执行待测试应用程序的终端。
步骤S300,基于第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。
其中,将拦截的目标请求中的第一请求内容更换为第二请求内容,发送给应用程序服务器,使应用程序服务器根据第二请求内容进行处理,并给运行待测试应用程序的终端反馈处理结果,运行待测试应用程序的终端根据处理结果进行显示,用户可以根据终端显示的内容,确定待测试应用程序是否存在安全问题。如:终端在运行待测试应用程序时,与应用程序服务器进行交互时,向应用程序服务器发送的请求是账号A购买游戏装备的请求,通过将购买游戏装备的请求中的第一请求内容代替为调整后的第二请求内容,发送至应用程序服务器后,应用程序服务器给账号A分配了对应的游戏装备,可是用于购买该游戏装备所需的资源并未在账号A中进行扣除,则可以说明该待测试应用程序存在风险。
在一个实施例中,基于第二请求内容与应用程序服务器进行数据交互,获得安全测试结果的步骤,包括:通过预设的安全测试接口根据第二请求内容,创建新请求;向应用程序服务器发送新请求,获得安全测试结果。
其中,新请求是用来作为原本要发送给应用程序服务器的目标请求,新请求中的请求内容为第二请求内容,目标请求中的请求内容为第一请求内容。将创建的新请求发送给应用程序服务器,使应用程序服务器根据第二请求内容进行处理,并给运行待测试应用程序的终端反馈处理结果,运行待测试应用程序的终端根据处理结果进行显示,用户可以根据终端显示的内容,确定待测试应用程序是否存在安全问题。
在一个实施例中,通过预设的安全测试接口根据第二请求内容,创建新请求的步骤,包括:通过预设的安全测试接口调用目标请求对应的请求发送函数;根据第二请求内容构造请求发送函数的参数,获得实例;根据实例获得新请求。
其中,请求发送函数指的是用于终端在运行待测试应用程序时,与应用程序服务器进行交互时,用于生成目标请求的函数。根据实例获得新请求。如目标请求中的请求数据为二进制数据流时,获得的新请求中的请求数据也应为根据第二请求内容进行通过序列化数据结构的协议序列化后的二进制数据流。
在一个实施例中,向应用程序服务器发送新请求,获得安全测试结果的步骤,包括:向应用程序服务器发送新请求,使应用程序服务器根据新请求进行处理后,反馈处理结果;根据所处理结果,确定安全测试结果。
其中,调用发送目标请求的发送接口将创建的新请求发送给应用程序服务器,应用程序服务器在接收到新请求后,根据新请求中的第二请求内容进行处理,并给运行待测试应用程序的终端反馈处理结果,运行待测试应用程序的终端根据处理结果进行显示,用户可以根据终端显示的内容,确定待测试应用程序是否存在安全问题。
上述应用程序安全测试方法,当检测到待测试应用程序发送目标请求时,拦截所述目标请求;通过预设的安全测试接口获取目标请求中的第一请求内容;根据第一请求内容进行显示;获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容;基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。通过安全测试接口获取待测试应用程序发送目标请求中的第一请求内容,并通过安全测试接口基于第二请求内容与应用程序服务器进行数据交互,对待测试应用程序进行安全测试,在应用程序安全测试的过程中,仅通过安全测试接口就可以完成安全测试。
在一个实施例中,如图5所示,以图5中的待测试应用程序为执行主体来举例说明,该实施例还涉及应用程序服务器、安全测试服务器和安全测试客户端,将应用程序安全测试方法应用到腾讯手游安全测试工具SecurityRadar中进行协议安全测试。结合一个具体的应用程序安全测试过程进行举例说明。
待测试应用程序(游戏程序)使用IL2CPP技术后,虽然已经完全变成了本地代码,但原始的c#函数地址仍可通过IL2CPP导出的底层接口动态查找到;如图6所示,以IL2CPP底层接口为基础,提供原始c#函数查找、程序集遍历、类成员遍历和C++函数调用能力;通过对实现反射机制的目标函数(反射函数)进行查找及调用实现反射功能,如Object::GetType()、MethodBase::Invoke、Box/unbox等等;最后将反射机制的目标函数(反射函数)进一步封装,成为易用性高的安全测试接口(c#接口),如:IL2CPPObject、IL2CPPMethod、Get/Set/Invoke。安全测试接口可实现实例创建、函数调用、字段和属性的访问与修改等功能,将安全测试接口作为待测试应用程序的一部分。并在待测试应用程序中设置钩子函数,用于目标请求进行监控。
如图5所示,待测试应用程序中的钩子函数监控到目标请求时,拦截目标请求,通过安全测试接口调用请求数据函数获取目标请求中请求数据,并调用反序列函数对请求数据中的二进制数据流进行数据转换,获得对象;将对象打包成可读文本,可读文本中的内容包括第一请求内容。待测试应用程序将获取的第一请求内容发送给安全测试服务器,安全测试服务器将第一请求内容给安全测试客户端进行解析后在对应的终端进行显示,用户通过终端输入修改内容,安全测试客户端获得第二请求内容,安全测试客户端将获得第二请求内容发送至安全测试服务器,安全测试服务器将接收到的第二请求内容转发给待测试应用程序,待测试应用程序通过安全测试接口调用请求发送函数,根据第二请求内容构造请求发送函数的参数,获得实例;根据实例获得新请求。调用发送目标请求的发送接口将新请求发送至应用程序服务器,应用程序服务器接收到新请求后进行处理,并将处理结果反馈给待测试应用程序,待测试应用程序将处理结果在终端进行显示。根据显示的内容确定待测试应用程序是否存在安全问题。
上述应用程序安全测试方法,通过安全测试接口调用请求数据函数获取待测试应用程序发送目标请求中的第一请求内容,并通过安全测试接口调用请求发送函数,根据第二请求内容构造请求发送函数的参数,获得实例;根据实例获得新请求。调用发送目标请求的发送接口将新请求发送至应用程序服务器,对待测试应用程序进行安全测试,在应用程序安全测试的过程中,测试人员可以直接操作显示第一请求内容的界面,进行协议修改、重发,只需通过安全测试接口就可以完成安全测试,不需要任何额外配置。可大大提高游戏测试效率。提高了协议测试的手游覆盖范围,填补了代理或外部游戏黑盒协议测试的空白。
图2为一个实施例中应用程序安全测试方法的流程示意图。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图7所示,一种应用程序安全测试装置,包括:请求拦截模块310、第一请求内容获取模块320、第一请求内容显示模块330、第二请求内容获取模块340和测试模块350。
请求拦截模块310,用于当检测到待测试应用程序发送目标请求时,拦截目标请求。
第一请求内容获取模块320,用于通过预设的安全测试接口获取目标请求中的第一请求内容。
第一请求内容显示模块330,用于根据第一请求内容进行显示。
第二请求内容获取模块340,用于获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容。
测试模块350,用于基于第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。
在一个实施例中,如图8所示,应用程序安全测试装置还包括:安全测试接口生成模块360,用于通过待测试应用程序的底层接口,查找实现反射机制的目标函数的函数地址,获得目标函数的函数地址;根据函数地址调用目标函数,并对目标函数进行封装,形成安全测试接口。
在一个实施例中,安全测试接口生成模块360还用于:通过待测试应用程序的底层接口根据函数名、函数所在的类名或类所在的程序集名查找实现反射机制的目标函数的函数地址,获得目标函数的函数地址。
在一个实施例中,安全测试接口生成模块360还用于:根据函数地址调用目标函数,并采用C#语言对目标函数进行封装,形成安全测试接口。
在一个实施例中,请求拦截模块310还用于:通过钩子函数对待测试应用程序发送的目标请求进行检测,并对测到发送接口发送的目标请求进行拦截。
在一个实施例中,第一请求内容获取模块320还用于:调用预设的安全测试接口获取目标请求中的请求数据;当请求数据为二进制数据流时,根据预设的数据转换方式对二进制数据流进行转换,获得第一请求内容。
在一个实施例中,第一请求内容获取模块320还用于:通过预设的安全测试接口调用反序列函数对所述二进制数据流进行转换,获得对象;将对象打包成可读文本,可读文本中的内容包括第一请求内容。
在一个实施例中,测试模块350还用于:通过预设的安全测试接口根据第二请求内容,创建新请求;向应用程序服务器发送新请求,获得安全测试结果。
在一个实施例中,测试模块350还用于:通过预设的安全测试接口调用目标请求对应的请求发送函数;根据第二请求内容构造请求发送函数的参数,获得实例;根据实例获得新请求。
在一个实施例中,测试模块350还用于:向应用程序服务器发送新请求,使应用程序服务器根据新请求进行处理后,反馈处理结果;根据处理结果,确定安全测试结果。
在一个实施例中,第一请求内容显示模块330还用于:将第一请求内容发送至安全测试服务器,使安全测试服务器将第一请求内容,转发至安全测试客户端进行解析后在对应的测试终端进行显示。
在一个实施例中,第二请求内容获取模块340还用于:获取测试终端通过安全测试服务器转发的第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容。
上述应用程序安全测试装置,请求拦截模块310当检测到待测试应用程序发送目标请求时,拦截所述目标请求;第一请求内容获取模块320通过预设的安全测试接口获取目标请求中的第一请求内容;第一请求内容显示模块330根据第一请求内容进行显示;第二请求内容获取模块340获取第二请求内容,第二请求内容是基于第一请求内容进行调整后的请求内容;测试模块350基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。通过安全测试接口获取待测试应用程序发送目标请求中的第一请求内容,并通过安全测试接口基于第二请求内容与应用程序服务器进行数据交互,对待测试应用程序进行安全测试,在应用程序安全测试的过程中,仅通过安全测试接口就可以完成安全测试。
图9示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图9所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现应用程序安全测试方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行应用程序安全测试方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的应用程序安全测试装置可以实现为一种计算机程序的形式,计算机程序可在如图9所示的计算机设备上运行。计算机设备的存储器中可存储组成该应用程序安全测试装置的各个程序模块,比如,图7所示的请求拦截模块310、第一请求内容获取模块320、第一请求内容显示模块330、第二请求内容获取模块340和测试模块350。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的应用程序安全测试方法中的步骤。
例如,图9所示的计算机设备可以通过如图7所示的应用程序安全测试装置中的请求拦截模块310执行步骤S220。计算机设备可通过第一请求内容获取模块320执行步骤S240。计算机设备可通过第一请求内容显示模块330执行步骤S260。计算机设备可通过第二请求内容获取模块340执行步骤S280。计算机设备可通过测试模块350执行步骤S300。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述应用程序安全测试方法的步骤。此处应用程序安全测试方法的步骤可以是上述各个实施例的应用程序安全测试方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述应用程序安全测试方法的步骤。此处应用程序安全测试方法的步骤可以是上述各个实施例的应用程序安全测试方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种应用程序安全测试方法,包括:
当检测到待测试应用程序发送目标请求时,拦截所述目标请求;
通过预设的安全测试接口获取所述目标请求中的第一请求内容;
根据所述第一请求内容进行显示;
获取第二请求内容,所述第二请求内容是基于所述第一请求内容进行调整后的请求内容;
基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。
2.根据权利要求1所述的方法,其特征在于,所述安全测试接口的生成方式包括:
通过所述待测试应用程序的底层接口,查找实现反射机制的目标函数的函数地址,获得所述目标函数的函数地址;
根据所述函数地址调用所述目标函数,并对所述目标函数进行封装,形成安全测试接口。
3.根据权利要求2所述的方法,其特征在于,所述根据所述函数地址调用所述目标函数,并对所述目标函数进行封装,形成安全测试接口的步骤,包括:
根据所述函数地址调用所述目标函数,并采用C#语言对所述目标函数进行封装,形成安全测试接口。
4.根据权利要求1所述的方法,其特征在于,所述通过预设的安全测试接口获取所述目标请求中的第一请求内容的步骤,包括:
通过预设的安全测试接口获取所述目标请求中的请求数据;
当所述请求数据为二进制数据流时,根据预设的数据转换方式对所述二进制数据流进行转换,获得第一请求内容。
5.根据权利要求1所述的方法,其特征在于,所述基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果的步骤,包括:
通过预设的所述安全测试接口根据所述第二请求内容,创建新请求;
向应用程序服务器发送所述新请求,获得安全测试结果。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第一请求内容进行显示的步骤,包括:
将所述第一请求内容发送至所述安全测试服务器,使所述安全测试服务器将所述第一请求内容,转发至安全测试客户端进行解析后在对应的测试终端进行显示。
7.根据权利要求6所述的方法,其特征在于,所述获取第二请求内容,所述第二请求内容是基于所述第一请求内容进行调整后的请求内容的步骤,包括:
获取所述测试终端通过所述安全测试服务器转发的第二请求内容,所述第二请求内容是基于所述第一请求内容进行调整后的请求内容。
8.一种应用程序安全测试装置,其特征在于,包括:
请求拦截模块,用于当检测到待测试应用程序发送目标请求时,拦截所述目标请求;
第一请求内容获取模块,用于通过预设的安全测试接口获取所述目标请求中的第一请求内容;
第一请求内容显示模块,用于根据所述第一请求内容进行显示;
第二请求内容获取模块,用于获取第二请求内容,所述第二请求内容是基于所述第一请求内容进行调整后的请求内容;
测试模块,用于基于所述第二请求内容与应用程序服务器进行数据交互,获得安全测试结果。
9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7任一项所述方法的步骤。
CN201910644821.1A 2019-07-17 2019-07-17 应用程序安全测试方法、装置和计算机可读存储介质 Pending CN110363009A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910644821.1A CN110363009A (zh) 2019-07-17 2019-07-17 应用程序安全测试方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910644821.1A CN110363009A (zh) 2019-07-17 2019-07-17 应用程序安全测试方法、装置和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN110363009A true CN110363009A (zh) 2019-10-22

Family

ID=68220271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910644821.1A Pending CN110363009A (zh) 2019-07-17 2019-07-17 应用程序安全测试方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110363009A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104323A (zh) * 2019-12-17 2020-05-05 广州品唯软件有限公司 应用程序的功能测试方法、系统、代理服务器及存储介质
CN111309620A (zh) * 2020-02-24 2020-06-19 腾讯科技(成都)有限公司 一种游戏协议测试方法、装置、电子设备和存储介质
CN111858296A (zh) * 2019-12-31 2020-10-30 北京嘀嘀无限科技发展有限公司 接口测试方法、装置、设备和存储介质
CN113360409A (zh) * 2021-07-16 2021-09-07 康剑萍 一种移动端应用程序的安全测试方法及系统
CN116775394A (zh) * 2023-08-18 2023-09-19 腾讯科技(深圳)有限公司 芯片验证方法、装置、设备、存储介质及计算机程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101807168A (zh) * 2010-03-15 2010-08-18 北京航空航天大学 一种支持版本兼容的数字终端测试环境及其构建方法
CN107908541A (zh) * 2017-07-26 2018-04-13 平安壹钱包电子商务有限公司 接口测试方法、装置、计算机设备及存储介质
CN109408393A (zh) * 2018-11-07 2019-03-01 深圳市腾讯网络信息技术有限公司 应用测试方法、装置及设备和计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101807168A (zh) * 2010-03-15 2010-08-18 北京航空航天大学 一种支持版本兼容的数字终端测试环境及其构建方法
CN107908541A (zh) * 2017-07-26 2018-04-13 平安壹钱包电子商务有限公司 接口测试方法、装置、计算机设备及存储介质
CN109408393A (zh) * 2018-11-07 2019-03-01 深圳市腾讯网络信息技术有限公司 应用测试方法、装置及设备和计算机可读存储介质

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104323A (zh) * 2019-12-17 2020-05-05 广州品唯软件有限公司 应用程序的功能测试方法、系统、代理服务器及存储介质
CN111858296A (zh) * 2019-12-31 2020-10-30 北京嘀嘀无限科技发展有限公司 接口测试方法、装置、设备和存储介质
CN111309620A (zh) * 2020-02-24 2020-06-19 腾讯科技(成都)有限公司 一种游戏协议测试方法、装置、电子设备和存储介质
CN111309620B (zh) * 2020-02-24 2024-05-07 腾讯科技(成都)有限公司 一种游戏协议测试方法、装置、电子设备和存储介质
CN113360409A (zh) * 2021-07-16 2021-09-07 康剑萍 一种移动端应用程序的安全测试方法及系统
CN116775394A (zh) * 2023-08-18 2023-09-19 腾讯科技(深圳)有限公司 芯片验证方法、装置、设备、存储介质及计算机程序产品
CN116775394B (zh) * 2023-08-18 2024-04-26 腾讯科技(深圳)有限公司 芯片验证方法、装置、设备、存储介质及计算机程序产品

Similar Documents

Publication Publication Date Title
CN110363009A (zh) 应用程序安全测试方法、装置和计算机可读存储介质
US11868231B2 (en) System and method for evaluating code by a hybrid of local and cloud-based computers
EP3971742A1 (en) Methods, blockchain nodes and storage media for deploying smart contract
US8615750B1 (en) Optimizing application compiling
US8694988B2 (en) Runtime extensions
US10209968B2 (en) Application compiling
US7600220B2 (en) Extensible execution language
CN110286897A (zh) Api可视化动态配置方法、装置、设备以及存储介质
US8694301B1 (en) Test environment for accumulating cumulative metric data
Dalla Preda et al. AIOCJ: A choreographic framework for safe adaptive distributed applications
CA2694303A1 (en) Extensible execution language
US20160246702A1 (en) Using emulation to disassociate verification from stimulus in functional test
CN112256321A (zh) 静态库打包方法、装置、计算机设备和存储介质
CN113722020B (zh) 接口调用方法、装置和计算机可读存储介质
CN108614767A (zh) 一种远程调试方法及装置
CN110673837B (zh) 代码修复方法及装置、电子设备、计算机可读存储介质
Przigoda et al. Verifying the structure and behavior in UML/OCL models using satisfiability solvers
US8234647B1 (en) Checking for mutual exclusiveness of a shared resource
US11531763B1 (en) Automated code generation using analysis of design diagrams
Olianas et al. MATTER: A tool for generating end-to-end IoT test scripts
US10819752B2 (en) Systems and methods for quantitative assessment of a computer defense technique
Malik et al. IoT Testing-as-a-Service: A new dimension of automation
CN109478202A (zh) 可缩放矢量图形包
US20110321009A1 (en) Implementing encryption via aspect oriented programming
CN106027639A (zh) 一种paas平台的广域网访问方法及装置

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