CN110135168A - 应用程序的检测方法、装置、***、终端设备及存储介质 - Google Patents

应用程序的检测方法、装置、***、终端设备及存储介质 Download PDF

Info

Publication number
CN110135168A
CN110135168A CN201910406460.7A CN201910406460A CN110135168A CN 110135168 A CN110135168 A CN 110135168A CN 201910406460 A CN201910406460 A CN 201910406460A CN 110135168 A CN110135168 A CN 110135168A
Authority
CN
China
Prior art keywords
application program
test
terminal
detected
android system
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.)
Granted
Application number
CN201910406460.7A
Other languages
English (en)
Other versions
CN110135168B (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.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology 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 Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201910406460.7A priority Critical patent/CN110135168B/zh
Publication of CN110135168A publication Critical patent/CN110135168A/zh
Application granted granted Critical
Publication of CN110135168B publication Critical patent/CN110135168B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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)
  • Stored Programmes (AREA)

Abstract

本公开公开了应用程序的检测方法、装置、***、终端设备及存储介质。所述方法包括:将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。利用该方法,能够无需测试人员人工实现测试,自动化的进行了应用程序的检测,提升了对应用程序进行检测时的效率。

Description

应用程序的检测方法、装置、***、终端设备及存储介质
技术领域
本公开实施例涉及检测技术领域,尤其涉及应用程序的检测方法、装置、***、终端设备及存储介质。
背景技术
安卓(Android)是一种基于Linux的自由及开放源代码的操作***,主要使用于移动设备,如智能手机和平板电脑。Android由Google(谷歌)公司和开放手机联盟领导及开发。
随着移动设备使用越来越广泛,移动设备中安装的应用程序(Application,App)会出现各种安全问题,因此需要对App的安全风险进行检测,安全风险检测主要是指对App进行的漏洞检测。目前,对App进行安全检测主要通过测试人员人工实现,检测效率低。
发明内容
本公开实施例提供了应用程序的检测方法、装置、***、终端设备及存储介质,以提高对应用程序进行检测时的效率。
第一方面,本公开实施例提供了一种应用程序的检测方法,包括:
将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;
接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
可选的,所述待检测件为导出组件,所述测试信息为空数据。
可选的,所述待检测件为接口,所述测试信息为预设网页数据。
可选的,在将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端之前,还包括:
修改安卓***的参数;
编译修改参数后的安卓***,得到镜像文件。
可选的,所述参数至少包括如下数据之一:崩溃处理数据、启动数据、网页加载数据和内核数据中的接口数据。
第二方面,本公开实施例还提供了一种应用程序的检测方法,包括:
从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;
所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;
向所述开发终端发送所述检测结果。
第三方面,本公开实施例还提供了一种应用程序的检测装置,包括:
发送模块,用于将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;
接收模块,用于接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
可选的,发送模块中所述待检测件为导出组件,接收模块中所述测试信息为空数据。
可选的,发送模块中所述待检测件为接口,接收模块中所述测试信息为预设网页数据。
可选的,还包括:修改模块,用于在将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端之前,修改安卓***的参数;编译修改参数后的安卓***,得到镜像文件。
可选的,修改模块中所述参数至少包括如下数据之一:崩溃处理数据、启动数据、网页加载数据和内核数据中的接口数据。
第四方面,本公开实施例还提供了一种应用程序的检测装置,包括:
获取模块,用于从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;
执行模块,用于所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;
结果发送模块,用于向所述开发终端发送所述检测结果。
第五方面,本公开实施例还提供了一种应用程序的检测***,包括:通信连接的开发终端和测试终端,所述开发终端设置如第三方面所述的应用程序的检测装置,各所述测试终端设置如第四方面所述的应用程序的检测装置,其中所述测试终端的数量为至少一个。
第六方面,本公开实施例还提供了一种终端设备,包括:
一个或多个处理装置;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现本公开实施例提供的应用程序的检测方法。
第七方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理装置执行时实现本公开实施例提供的应用程序的检测方法。
本公开实施例提供了应用程序的检测方法、装置、***、终端设备及存储介质,该方法首先将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;然后接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取,利用上述技术方案无需测试人员人工实现测试,自动化的进行了应用程序的检测,提升对应用程序进行检测时的效率。
附图说明
图1为本公开实施例一提供的一种应用程序的检测方法的流程示意图;
图2为本公开实施例二提供的一种应用程序的检测方法的流程示意图;
图3为本公开实施例三提供的一种应用程序的检测方法的流程示意图;
图4a为本公开实施例四提供的一种应用程序的检测方法的流程示意图;
图4b为本公开实施例四提供的一种应用程序的检测方法的示例流程示意图;
图5为本公开实施例五提供的一种应用程序的检测装置的结构示意图;
图6为本公开实施例六提供的一种应用程序的检测装置的结构示意图;
图7为本公开实施例七提供的一种应用程序的检测***的场景示意图;
图8为本公开实施例八提供的一种终端设备的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。此外,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。
实施例一
图1为本公开实施例一提供的一种应用程序的检测方法的流程示意图,该方法可适用于对应用程序进行检测的情况,如,对应用程序的漏洞进行检测的情况。该方法可以由应用程序的检测装置执行,其中该装置可由软件和/或硬件实现,并一般集成在终端设备上,在本公开实施例中终端设备包括但不限于:平板电脑、台式计算机等设备。该终端设备可以认为是开发终端。
如图1所示,本公开实施例一提供的一种应用程序的检测方法,包括如下步骤:
S101、将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端。
在本公开实施例中,镜像文件可以理解为对安卓***的源码进行编译后形成的文件。本步骤中不限定安卓操作***的版本。不同测试终端可以对应有不同版本的安卓***,以形成不同版本的手机硬件,从而满足对应用程序在不同版本安卓***的差异化检测。待检测件为应用程序的组成部分,通过向不同的待检测件写入对应的测试信息后,运行应用程序,根据应用程序的运行结果可以得到应用程序的检测结果。
其中,安卓***的镜像文件可以预先存储,具体的,镜像文件可以通过如下方式生成:根据对应用程序的检测需求,对原始安卓***的参数进行修改,从而得到镜像文件。测试终端接收到镜像文件后,测试终端在该安卓***下安装并运行应用程序。
在对应用程序进行不同的测试时,可以有不同的待检测件,将待检测件发送给测试终端,可以使测试终端中应用程序对应的待检测件获取测试信息,以完成对应用程序的检测。
镜像文件、应用程序的安装包和应用程序的待检测件可以同时发送给测试终端,也可以分别发送给测试终端,如果采用分别发送的方式,无需限定分别发送的顺序。
需要注意的是,本步骤中的测试终端的数量不作限定,可以为至少一个。当有多个测试终端时,不同的测试终端接收到的镜像文件可以不同。
S102、接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
本公开实施例中,不同的待检测件获取的测试信息不同,测试信息可以预先存储在测试终端,也可以由开发终端发送给测试终端。
在向测试终端发送镜像文件、应用程序的安装包和应用程序的待检测件后,本步骤可以接收应用程序的检测结果。该检测结果可以由测试终端的应用程序执行测试信息后的运行参数确定。
本公开实施例一提供了一种应用程序的检测方法,上述方法首先将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;然后接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取,利用上述技术方案无需测试人员人工实现测试,自动化的进行了应用程序的检测,提升对应用程序进行检测时的效率。
实施例二
图2为本公开实施例二提供的一种应用程序的检测方法的流程示意图,本公开实施例以实施例一中各个可选方案为基础进行具体化。在本公开实施例中,待检测件为导出组件,测试信息为空数据。
进一步地,本公开实施例还在将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端之前,进一步包括:修改安卓***的参数;编译修改参数后的安卓***,得到镜像文件。
本公开实施例尚未详尽的内容请参考实施例一。
如图2所示,本公开实施例二提供的一种应用程序的检测方法,包括如下步骤:
S201、修改安卓***的参数。
本公开实施例包括了得到安卓***的镜像文件的过程,在获得镜像文件前,可以先修改安卓***的参数,以确保测试终端能够在修改后的安卓***下便捷、高效的进行应用程序的检测。
安卓***可以为官方开源的Android操作***源码。本步骤可以修改Android操作***源码中的参数,此处不限定修改的参数的具体内容,本领域技术人员可以根据想要测试的内容进行设定。如可以通过修改参数使得测试终端能够获得最高的权限。
S202、编译修改参数后的安卓***,得到镜像文件。
修改完安卓***的参数后,本步骤可以编译修改后的安卓***,从而得到镜像文件,以便于测试终端在该镜像文件对应的安卓***下能够准确便捷的完成应用程序的测试。
S203、将安卓***的镜像文件、应用程序的安装包和应用程序的导出组件发送给测试终端。
本公开实施例中,待检测件为导出组件,导出组件可以理解为能够显示给外部的组件。如,能够显示给外部程序的组件。其中,外部程序可以理解为除应用程序以外的程序。攻击者能够通过向导出组件发起攻击。
在将应用程序的导出组件发送给测试终端前,开发终端可以对应用程序进行解析,得到暴露的App组件(即导出组件)。其中,组件可以理解为组成应用程序的模块。
本公开实施例将应用程序的导出组件发送给测试终端,可以使测试终端向应用程序中的导出组件分发测试信息,从而完成对测试终端的攻击测试。
S204、接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行空数据后的运行参数得到,所述空数据为所述测试终端在所述安卓***下安装所述应用程序后所述导出组件获取。
在待检测件为导出组件时,本公开实施例中的检测结果可以为测试终端根据应用程序执行空数据后的运行参数得到。
向测试终端发送导出组件后,可以控制测试终端向应用程序的导出组件分发空数据,以实现对应用程序的攻击,从而基于应用程序执行空数据后的运行参数得到检测结果。进行攻击测试得到的检测结果可以确定应用程序是否存在App组件拒绝服务和组件越权访问等漏洞。
本公开实施例二提供了一种应用程序的检测方法,具体化了待检测件和测试信息,还包括了获得镜像文件的操作。该方法修改了安卓***的参数,并编译修改参数后的安卓***得到镜像文件,提高测试终端在该镜像文件下对应用程序进行测试时的效率,使得应用程序的检测结果更加准确。此外,该方法待检测件为导出组件,使得测试终端能够完成攻击检测,从而实现对App组件拒绝服务和组件越权访问等漏洞的检测。
实施例三
图3为本公开实施例三提供的一种应用程序的检测方法的流程示意图。本公开实施例以实施例一中各个可选方案为基础进行具体化。在本公开实施例中,待检测件为接口,所述测试信息为预设网页数据。
进一步的,参数至少包括如下数据之一:崩溃处理数据、启动数据、网页加载数据和内核数据中的接口数据。
本公开实施例尚未详尽的内容请参考上述实施例。
如图3所示,本公开实施例三提供的一种应用程序的检测方法,包括如下步骤:
S301、修改安卓***的参数,参数至少包括如下数据之一:崩溃处理数据、启动数据、网页加载数据和内核数据中的接口数据。
本公开实施例可以修改安卓***中的崩溃处理数据、启动数据、网页加载数据和内核数据中的接口函数中的至少一种。
具体的,接口数据可以为用户态和内核态进行交互的接口数据,修改接口数据可以使得测试终端在进行应用程序检测时获得最高权限。崩溃处理数据可以为程序崩溃处理的数据,修改崩溃处理数据可以在应用程序崩溃时,测试终端自动进行漏洞信息的收集。启动数据可以为安卓***启动应用程序时执行的数据。网页加载数据可以为显示网页控件加载网页的数据。修改启动数据和网页加载数据能够在测试终端启动应用程序时,自动获取测试信息完成应用程序的检测。
S302、编译修改参数后的安卓***,得到镜像文件。
S303、将安卓***的镜像文件、应用程序的安装包和应用程序的接口发送给测试终端。
本公开实施例中,待检测件为接口,接口可以理解为应用程序加载网页链接的接口。将接口发送给测试终端,可以便于测试终端通过该接口获取测试信息,以实现模糊测试。
开发终端将接口发送至测试终端前,可以解析应用程序以得到该应用程序的接口,此处不限定获取应用程序接口的具体手段,如通过静态分析和运行时插桩检测的方式,得到应用程序加载网页链接的接口。
S304、接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行预设网页数据后的运行参数得到,所述预设网页数据为所述测试终端在所述安卓***下安装所述应用程序后所述接口获取。
将接口发送给测试终端后,本公开实施例中的检测结果可以为测试终端根据应用程序执行预设网页数据后的运行参数得到。
其中,预设网页数据可以为不规则网页数据,该预设网页数据可以为根据攻击者为了进行应用程序攻击,制作的特定的页面确定。该特定的页面可以为在访问网页时,无法正常打开、访问或打开后存在异常提示的页面。
向测试终端发送接口后,可以控制测试终端向应用程序的接口加载预设网页数据,以实现模糊测试。模糊测试可以理解为对应用程序漏洞检测中的一种测试。模糊测试可以测得应用程序是否存在网络视图(WebView)组件的内存破坏类漏洞。
本公开实施例三提供的一种应用程序的检测方法,具体化了待检测件、测试信息和修改的参数。该方法将修改的参数进行了具体化,在应用程序启动时能够自动获得测试信息进行应用程序检测。在测试终端进行应用程序检测时,能够获得最高权限。在应用程序崩溃时自动进行漏洞信息的收集。此外,待检测件为接口,使得测试终端能够完成模糊测试,从而实现网络视图(WebView)组件的内存破坏类漏洞的检测。
实施例四
图4a为本公开实施例四提供的一种应用程序的检测方法的流程示意图。该方法可适用于对应用程序进行检测的情况,如,对应用程序的漏洞进行检测的情况。该方法可以由应用程序的检测装置执行,其中该装置可由软件和/或硬件实现,并一般集成在终端设备上,在本公开实施例中终端设备包括但不限于:手机和/或个人数字助理等设备。该终端设备可以认为是测试终端。本公开实施例中的测试终端可以与本公开所公开的开发终端通信协作完成应用程序的检测。本公开实施例中尚未详尽之处可以参见上述实施例。
如图4a所示,本公开实施例四提供的一种应用程序的检测方法,包括如下步骤:
S401、从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序。
在本公开实施例中,应用程序的检测方法可以由测试终端执行。开发终端为与测试终端进行通信连接的设备。开发终端和测试终端协作可以实现对测试终端中应用程序的检测。
测试终端进行应用程序检测时,可以首先从开发终端获得安卓***的镜像文件,该镜像文件可以为对安卓***的参数进行修改后编译生成的。测试终端接收镜像文件后,将镜像文件烧录到本测试终端。
应用程序可以为测试终端待进行检测的程序。此处不限定应用程序的数量,应用程序的数量可以为至少一个。测试终端接收应用程序的安装包后,可以在安卓***下安装该应用程序,以完成对该应用程序的检测。应用程序的待测件可以为实现对应用程序进行检测的内容。不同的应用程序可以对应有不同的待测件。同一应用程序可以由多个待测件。
此处不对测试终端接收开发终端发送的镜像文件、应用程序的安装包和应用程序的待检测件的顺序进行限定,只要保证在对待检测应用程序进行检测时,测试终端安装了应用程序,在安装应用程序之前,测试终端烧录了镜像文件即可。
S402、所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果。
获得镜像文件、应用程序的安装包和应用程序的待检测件后,本步骤可以对应用程序进行检测。
可以理解的是,对应用程序进行不同的检测对应的待检测件不同,此处不限定待检测件的具体内容。测试信息可以基于待检测件进行确定。当待检测件为导出组件时,测试信息可以为空数据。当待检测件为接口时,测试信息可以为预设网页数据。
其中,运行参数可以理解为应用程序执行测试信息时的过程参数和结果参数。检测结果可以为基于运行参数确定的检测报告。
测试终端进行应用程序的检测时,可以通过待检测件获取测试信息已完成相应的检测。示例性的,当待检测件为导出组件时,测试终端应用程序的导出组件可以获得空数据,以完成攻击测试;当待检测件为接口时,测试终端应用程序的接口可以加载预设网页数据,以完成模糊测试。
S403、向所述开发终端发送所述检测结果。
得到检测结果后,本步骤可以经检测结果发送给开发终端,以供开发人员进行查看。
以下针对上述实施例对本公开进行示例性的描述:
现有对于应用程序的检测主要通过测试人员手工实现,检测效率较低。本示例中能够自动高效的对应用程序进行检测,检测应用程序时对于漏洞检测的覆盖面较广。如,在自动化实现对应用程序的检测的前提下,还可以高效解决App组件拒绝服务,组件越权访问和WebView组件的内存破坏类漏洞。本示例中的应用程序检测的方法可以认为是一种基于修改安卓***的方式(定制安卓***的方式)来开发自动化检测移动应用的漏洞检测方案。
图4b为本公开实施例四提供的一种应用程序的检测方法的示例流程示意图。参见图4b,具体的,在进行应用程序检测时,可以包括以下步骤:
S1.定制安卓操作***。
在linux开发机(开发终端)上下载谷歌官方开源的Android操作***(即安卓***)源码,再将源码进行二次修改。首先在内核源码中,修改了默认的***用户态和内核态进行交互的接口函数(即Ioctl函数),使得检测引擎能轻易获得***的最高权限,以此来方便检测引擎的自动化检测与模块管理;接着在Android操作***源码中,修改默认的程序崩溃处理的函数(即UncaughtHandler函数),使得一旦有App崩溃,***就能自动通知检测引擎,这样能更准确便捷地收集漏洞信息;然后修改了Android操作***源码中,默认的网页加载的函数和***启动App时所执行的函数(即ActivityThread的main函数),使得***在App启动时,在App里自动***检测代码(检测引擎),那么待测App在接收到特定命令,如调度引擎发送的调度命令,后就能使用自身的网页解析器加载测试用例,如加载传入的不规则网页和/或不规则数据。
即,通过修改安卓框架中应用崩溃处理模块、web加载模块和权限修改模块。在安卓内核中增加新的***调用、优化进程间通信、App授权接口,以完成定制化的安卓***。
S2.搭建定制手机的真机池。
在linux开发机上,将之前二次修改过的Android操作***源码进行编译。再将编译出来的各种镜像文件(不同的镜像文件对应不同版本的Android操作***源码),烧录在不同版本的手机硬件上。以此满足对App在不同安卓版本上的差异化检测。其中,真机池可以理解为检测终端。
S3.App解析引擎解析待检测应用程序。
App解析引擎运行在后端(linux开发机)。App解析引擎读取并解析待检测应用程序,将待检测应用程序中暴露的App组件(即组成App的一些模块)分发给App组件模糊测试引擎,App组件模糊测试引擎运行在真机池;将特定的网页访问格式,发送给App网页浏览服务模糊测试引擎,App网页浏览服务模糊测试引擎运行在linux开发机。需要注意的是,检测引擎分为4个模块。分别是App解析引擎,调度引擎,App组件模糊测试引擎和App网页浏览服务模糊测试引擎。
S4.App组件模糊测试引擎接收暴露的组件信息并构建不规则数据,以生成测试用例。
App组件模糊测试引擎运行在真机池。App组件模糊测试引擎是通过构建各种不规则的数据,然后利用Android组件分发机制(intent方式),把构建好的不规则数据发送给从App解析引擎传递的各个暴露组件,以此来完成攻击测试。其中,不规则数据可以认为是空数据。
S5.App网页浏览服务模糊测试引擎接收规定的web访问格式,并构建不规则的网页数据,以生成测试用例。
App网页浏览服务模糊测试引擎运行在后端(linux开发机)。App网页浏览服务模糊测试引擎是指对使用了网页浏览服务功能的App,通过静态分析和运行时插桩检测的方式,得到App加载任意网页链接的接口,然后通过规定的web访问格式向该接口打入不规则的html页面,js页面等网页数据,从而进行模糊测试。
可以理解的是,S4实现的是漏洞检测中的攻击测试。S5实现的是漏洞检测中的模糊测试。S4和S5可以同时运行,也可以择一运行。
S6.调度引擎将测试用例或调度命令发送至真机池。
调度引擎采用分布式的调度方案,即多个任务同时进行,互不干涉,以此来提升检测效率。
以完成攻击测试为例进行说明:App组件模糊测试引擎的功能,是生成测试用例,然后将测试用例送给调度引擎存储起来。App组件模糊测试引擎的测试用例可以认为是不规则的数据。
调度引擎接收到测试用例后,将测试用例分发给真机池,即调度引擎将测试用例传输给真机池里的每一台手机,手机收到后,将测试用例先存起来。然后真机池可以给调度引擎反馈存储完成指令,调度引擎接收到存储完成指令后可以给真机池发送调度命令。调度引擎也可以在预设时间后直接给真机池发送调度命令。即调度引擎将开始测试命令传输给真机池里的每一台手机。
真机池中的手机,即测试终端收到调度命令后,启动相应的App,然后通过App执行已经存储了的测试用例。
不直接由App组件模糊测试引擎把测试用例给真机池是由于为了提高效率,在每一个测试用例被执行后,真机池会有结果反馈给调度引擎,调度引擎可以根据结果,再发送相应的调度命令(如跳过哪些测试用例,重点测试哪些测试用例)。
真机池执行测试用例后可以进行结果展示。检测引擎最终会将漏洞检测日志的结果自动化处理,解析扫描结果与每一个执行的过程,最终形成报告。
本示例中通过修改安卓源码和内核源码来完成定制安卓***,以此覆盖应用程序攻击测试的各种需求,并可以在定制安卓***上扫描出应用程序的各种漏洞,并且自动整理出所有信息,形成报告。
本公开实施例四提供的一种应用程序的检测方法,首先从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;然后所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;最终向所述开发终端发送所述检测结果。利用上述方法,能够无需测试人员人工实现测试,自动化的进行了应用程序的检测,提升对应用程序进行检测时的效率。
实施例五
图5为本公开实施例五提供的一种应用程序的检测装置的结构示意图,该装置可适用于对应用程序进行检测的情况,如,对应用程序的漏洞进行检测的情况。其中该装置可由软件和/或硬件实现,并一般集成在终端设备上。该终端设备可以为平板电脑、台式计算机等设备。
如图5所示,该装置包括:发送模块51和接收模块52;
其中,发送模块51,用于将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;
接收模块52,用于接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
在本公开实施例中,该装置首先通过发送模块51将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;然后通过接收模块52接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
本公开实施例提供了一种应用程序的检测装置,能够通过发送模块将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端,然后通过接收模块接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取,从而无需测试人员人工实现测试,自动化的进行了应用程序的检测,提升了对应用程序进行检测时的效率。
在上述方案的基础上,发送模块51中所述待检测件为导出组件,接收模块52中所述测试信息为空数据。
在上述方案的基础上,发送模块51中所述待检测件为接口,接收模块52中所述测试信息为预设网页数据。
在上述方案的基础上,还包括:修改模块,用于在将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端之前,修改安卓***的参数;编译修改参数后的安卓***,得到镜像文件。
在上述方案的基础上,修改模块中所述参数至少包括如下数据之一:崩溃处理数据、启动数据、网页加载数据和内核数据中的接口数据。
上述应用程序的检测装置可执行本公开实施例一、实施例二和实施例三中的至少一个实施例所提供的应用程序的检测方法,具备执行方法相应的功能模块和有益效果。
实施例六
图6为本公开实施例六提供的一种应用程序的检测装置的结构示意图。该装置可适用于对应用程序进行检测的情况,如,对应用程序的漏洞进行检测的情况。其中该装置可由软件和/或硬件实现,并一般集成在终端设备上。
如图6所示,该装置包括:获取模块61、执行模块62和结果发送模块63;
其中,获取模块61,用于从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;
执行模块62,用于所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;
结果发送模块63,用于向所述开发终端发送所述检测结果。
在本公开实施例中,该装置首先通过获取模块61从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;然后执行模块62通过所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;最后通过结果发送模块63向所述开发终端发送所述检测结果。
本公开实施例提供了一种应用程序的检测装置,能够无需测试人员人工实现测试,自动化的进行了应用程序的检测,提升对应用程序进行检测时的效率。
上述应用程序的检测装置可执行本公开实施例四所提供的应用程序的检测方法,具备执行方法相应的功能模块和有益效果。
实施例七
图7为本公开实施例七提供的一种应用程序的检测***的场景示意图。如图7所示,应用程序的检测***包括:通信连接的开发终端71和测试终端72,开发终端71设置如实施例五所述的应用程序的检测装置,各测试终端72设置如实施例六所述的应用程序的检测装置,其中测试终端72的数量为至少一个。
各测试终端72可以安装有不同安卓操作***对应的镜像文件,也可以安装有相同安卓操作***对应的镜像文件。
本公开实施例中的应用程序的检测***在进行应用程序的检测时,具备与本公开实施例五和实施例六类似的实现原理及技术效果此处不再赘述。
实施例八
图8为本公开实施例八提供的一种终端设备的结构示意图。参见图8,图8示出了适于用来实现本公开实施例的终端设备800的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图8示出的终端设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储装置808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有终端设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许终端设备800与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的终端设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM 802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述终端设备中所包含的;也可以是单独存在,而未装配入该终端设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端设备:将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端设备:从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;向所述开发终端发送所述检测结果。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (11)

1.一种应用程序的检测方法,其特征在于,包括:
将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;
接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
2.根据权利要求1所述的方法,其特征在于,所述待检测件为导出组件,所述测试信息为空数据。
3.根据权利要求1所述的方法,其特征在于,所述待检测件为接口,所述测试信息为预设网页数据。
4.根据权利要求1-3中任一所述的方法,其特征在于,在将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端之前,还包括:
修改安卓***的参数;
编译修改参数后的安卓***,得到镜像文件。
5.根据权利要求4所述的方法,其特征在于,所述参数至少包括如下数据之一:崩溃处理数据、启动数据、网页加载数据和内核数据中的接口数据。
6.一种应用程序的检测方法,其特征在于,包括:
从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;
所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;
向所述开发终端发送所述检测结果。
7.一种应用程序的检测装置,其特征在于,包括:
发送模块,用于将安卓***的镜像文件、应用程序的安装包和应用程序的待检测件发送给测试终端;
接收模块,用于接收所述应用程序的检测结果,所述检测结果为所述测试终端根据应用程序执行测试信息后的运行参数得到,所述测试信息为所述测试终端在所述安卓***下安装所述应用程序后所述待检测件获取。
8.一种应用程序的检测装置,其特征在于,包括:
获取模块,用于从开发终端获取安卓***的镜像文件、应用程序的安装包和应用程序的待检测件,并在所述安卓***中安装所述应用程序;
执行模块,用于所述应用程序的待检测件获取测试信息后,根据应用程序执行所述测试信息的运行参数得到所述应用程序的检测结果;
结果发送模块,用于向所述开发终端发送所述检测结果。
9.一种应用程序的检测***,其特征在于,包括:通信连接的开发终端和测试终端,所述开发终端设置如权利要求7所述的应用程序的检测装置,各所述测试终端设置如权利要求8所述的应用程序的检测装置,其中所述测试终端的数量为至少一个。
10.一种终端设备,其特征在于,包括:
一个或多个处理装置;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现如权利要求1-6中任一所述的应用程序的检测方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现如权利要求1-6中任一所述的应用程序的检测方法。
CN201910406460.7A 2019-05-16 2019-05-16 应用程序的检测方法、装置、***、终端设备及存储介质 Active CN110135168B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910406460.7A CN110135168B (zh) 2019-05-16 2019-05-16 应用程序的检测方法、装置、***、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910406460.7A CN110135168B (zh) 2019-05-16 2019-05-16 应用程序的检测方法、装置、***、终端设备及存储介质

Publications (2)

Publication Number Publication Date
CN110135168A true CN110135168A (zh) 2019-08-16
CN110135168B CN110135168B (zh) 2021-04-20

Family

ID=67574470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910406460.7A Active CN110135168B (zh) 2019-05-16 2019-05-16 应用程序的检测方法、装置、***、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN110135168B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111310188A (zh) * 2020-04-01 2020-06-19 全球能源互联网研究院有限公司 一种终端文件***敏感信息检查方法及装置
CN111859385A (zh) * 2020-07-29 2020-10-30 中国工商银行股份有限公司 应用程序的测试方法、***及装置
CN112347484A (zh) * 2020-10-27 2021-02-09 杭州安恒信息技术股份有限公司 软件漏洞检测方法、装置、设备及计算机可读存储介质
CN112416795A (zh) * 2020-12-03 2021-02-26 江苏通付盾科技有限公司 应用程序的检测方法、装置、计算机设备和存储介质
CN113419971A (zh) * 2021-08-25 2021-09-21 北京邮电大学 安卓***服务漏洞检测方法及相关装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331662A (zh) * 2013-07-22 2015-02-04 深圳市腾讯计算机***有限公司 Android恶意应用检测方法及装置
CN104461898A (zh) * 2014-12-19 2015-03-25 北京奇虎科技有限公司 应用测试的方法、中控服务器、测试终端及***
CN104461897A (zh) * 2014-12-18 2015-03-25 网易(杭州)网络有限公司 一种应用程序测试的方法和设备
US9258669B2 (en) * 2013-07-31 2016-02-09 Sap Se Registering a mobile application with a server
CN106096399A (zh) * 2016-06-01 2016-11-09 努比亚技术有限公司 应用程序编程接口的检测装置及方法
CN106126414A (zh) * 2016-06-14 2016-11-16 珠海格力电器股份有限公司 应用软件测试方法和***
CN106294158A (zh) * 2016-08-11 2017-01-04 北京小米移动软件有限公司 终端测试方法、装置及***
CN106339309A (zh) * 2015-07-14 2017-01-18 腾讯科技(深圳)有限公司 应用程序的测试方法、客户端及***

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331662A (zh) * 2013-07-22 2015-02-04 深圳市腾讯计算机***有限公司 Android恶意应用检测方法及装置
US9258669B2 (en) * 2013-07-31 2016-02-09 Sap Se Registering a mobile application with a server
CN104461897A (zh) * 2014-12-18 2015-03-25 网易(杭州)网络有限公司 一种应用程序测试的方法和设备
CN104461898A (zh) * 2014-12-19 2015-03-25 北京奇虎科技有限公司 应用测试的方法、中控服务器、测试终端及***
CN106339309A (zh) * 2015-07-14 2017-01-18 腾讯科技(深圳)有限公司 应用程序的测试方法、客户端及***
CN106096399A (zh) * 2016-06-01 2016-11-09 努比亚技术有限公司 应用程序编程接口的检测装置及方法
CN106126414A (zh) * 2016-06-14 2016-11-16 珠海格力电器股份有限公司 应用软件测试方法和***
CN106294158A (zh) * 2016-08-11 2017-01-04 北京小米移动软件有限公司 终端测试方法、装置及***

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111310188A (zh) * 2020-04-01 2020-06-19 全球能源互联网研究院有限公司 一种终端文件***敏感信息检查方法及装置
CN111859385A (zh) * 2020-07-29 2020-10-30 中国工商银行股份有限公司 应用程序的测试方法、***及装置
CN111859385B (zh) * 2020-07-29 2023-09-22 中国工商银行股份有限公司 应用程序的测试方法、***及装置
CN112347484A (zh) * 2020-10-27 2021-02-09 杭州安恒信息技术股份有限公司 软件漏洞检测方法、装置、设备及计算机可读存储介质
CN112416795A (zh) * 2020-12-03 2021-02-26 江苏通付盾科技有限公司 应用程序的检测方法、装置、计算机设备和存储介质
CN113419971A (zh) * 2021-08-25 2021-09-21 北京邮电大学 安卓***服务漏洞检测方法及相关装置

Also Published As

Publication number Publication date
CN110135168B (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
CN110135168A (zh) 应用程序的检测方法、装置、***、终端设备及存储介质
CN107133180B (zh) 动态页面的测试方法、测试装置及存储介质
US9495543B2 (en) Method and apparatus providing privacy benchmarking for mobile application development
CN102981915B (zh) 一种应用程序间通信方法及装置
US20120233588A1 (en) Blended service creation, test, and deployment environment for multiple service endpoints
CN108932194A (zh) 自动化测试方法、装置、***、介质及电子设备
CN107122301A (zh) 界面测试方法及装置
CN110442524A (zh) 一种针对带有认证授权的web服务接口测试方法和装置
CN110347587A (zh) App兼容性测试方法、装置、计算机设备及存储介质
CN108958992A (zh) 测试方法和装置
CN109815105A (zh) 基于Btrace的应用程序测试方法和装置
CN110109979A (zh) 一种配置表单选项方法和装置
CN110069308A (zh) 页面启动方法、装置、电子设备和存储介质
CN103034546B (zh) iOS***中应用程序间通信的方法及装置
CN109684188A (zh) 测试方法和装置
CN109753622A (zh) 静态资源管理方法、装置、存储介质及电子设备
CN110209315A (zh) 用户界面中字符的显示方法、装置、电子设备及存储介质
CN110245030A (zh) 一种数据服务提供方法、装置、介质和电子设备
CN110362488A (zh) 一种页面测试方法、装置、电子设备及存储介质
CN110389899A (zh) 检测js程序的api数据类型的方法装置、介质和设备
CN110134529A (zh) 一种基于浏览器进入容器能力的解决方法
CN110489333A (zh) 一种基于检查器调试数据的方法、装置、介质和电子设备
CN109947423A (zh) 代码生成方法、装置、终端和介质
CN110489326B (zh) 基于ids的httpapi调试方法装置、介质和设备
CN110489180A (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