一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种测试方法、电子设备以及存储介质与流程

2021-11-10 03:51:00 来源:中国专利 TAG:


1.本技术涉及终端技术领域,尤其涉及一种测试方法、电子设备以及存储介质。


背景技术:

2.在android应用运行期间,可以动态注册一个或多个广播接收器。当该应用处于活跃状态时会通过广播接收器,接收其他应用发送的广播。由于未验证广播发送者的身份,恶意应用可以向该应用注册的一个或多个广播接收器发送携带某些参数的广播,从而导致该应用崩溃(crash)。


技术实现要素:

3.第一方面,本技术提供了一种应用的测试方法,应用注册一个或多个广播接收器,包括:
4.获取应用的源代码文件;从源代码文件中获取广播接收器的第一参数,第一参数指示广播接收器接收的广播消息中的特定参数;示例性地,该第一参数可以为广播接收器所能接收的intent中的action。获取第二预设参数,该第二预设参数可以使得校验该预设参数的应用发生问题。基于第一参数和第二预设参数,构造广播消息;示例性地,该广播消息可以为intent消息。向广播接收器发送广播消息,以确定应用是否存在安全问题。
5.现有技术均是通过代码审查实现。按照反编译的源码,在代码中找到广播接收器,通过人工的方式查看广播接收器中的代码是否有对接收广播传进来的intent进行校验或异常处理,需要检查人员人工理清代码逻辑,检查费时费力还有漏测漏检风险。
6.本技术相较于现有技术,可以通过批量整理应用注册的广播接收器所能接收的广播消息对应action,并构造恶意intent批量发送广播,来对应用进行测试,不需要通过人工的方式查看广播接收器中的代码是否有对接收广播传进来的intent进行校验或异常处理,提高了测试效率。
7.在本技术的一个实施例中,获取应用的源代码文件,包括:
8.对应用的应用安装包进行反编译,以获取应用的源代码文件。
9.在本技术的一个实施例中,从源代码文件中获取广播接收器的第一参数,包括:
10.从源代码文件中确定目标文件,从目标文件中获取广播接收器的第一参数。
11.在本技术的一个实施例中,目标文件包括xml文件、smali文件、java文件中一个或多个。
12.在本技术的一个实施例中,第二预设参数为空值。
13.第二方面,本技术提供了一种电子设备,包括获取模块、匹配模块以及构造模块,
14.获取模块用于获取应用的源代码文件;
15.匹配模块用于从源代码文件中获取广播接收器的第一参数,第一参数指示广播接收器接收的广播消息中的特定参数
16.构造模块用于获取第二预设参数,以及基于第一参数和第二预设参数,构造广播
消息;
17.构造模块还用于向广播接收器发送广播消息,以确定应用是否存在安全问题。
18.在本技术的一个实施例中,获取模块还用于对应用的应用安装包进行反编译,以获取应用的源代码文件。
19.在本技术的一个实施例中,匹配模块还用于从源代码文件中确定目标文件,从目标文件中获取广播接收器的第一参数。
20.在本技术的一个实施例中,第二预设参数为空值。
21.第三方面,本技术提供了一种电子设备,包括处理器和存储设备,存储设备存有程序指令,程序指令由处理器运行时,使得电子设备执行第一方面所述的测试方法。
22.第四方面,本技术提供了一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面所述的测试方法。
附图说明
23.图1为本技术一个实施例提供的一种电子设备100的结构示意图;
24.图2为本技术一个实施例提供的对待检测应用进行测试的示意图;
25.图3a为本技术一个实施例提供的第一应用的源代码文件中的xml文件的示例图;
26.图3b为本技术一个实施例提供的第一应用的源代码文件中的smali文件的示例图;
27.图3c为本技术一个实施例提供的第一应用的源代码文件中的java文件的示例图;
28.图3d为本技术一个实施例提供的异常数据示例图;
29.图4为申请一个实施例提供的测试方法的流程图;
30.图5为本技术另一个实施例提供的一种电子设备100的结构示意图。
具体实施方式
31.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。其中,在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
32.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
33.为了避免恶意应用向安卓应用注册的一个或多个广播接收器,发送携带某些参数的广播,导致该应用产生崩溃(crash)等问题。相关技术中提出了多种方法来解决该问题,相关技术中一般需要对应用的apk(application package file)进行反编译,获取应用的源代码,在源代码中手工找到该应用注册的广播接收器,再通过代码审查的手段查看应用注册的广播接收器是否有对接收广播传进来的intent进行调用者的uid、签名信息判断等校验,以确定该应用是否存在安全问题。相关技术中的排查效率低下,且容易因为排查人员水平问题而导致漏测漏检。
34.本技术公开了一种测试方法,通过收集电子设备中一个或多个应用的注册的广播器所能接收的广播中的特定action,通过该action构造一个或多个测试广播,然后将构造的测试广播发送给一个或多个应用注册的广播接收器,以确定该应用是否存在安全问题。
35.为了更方便理解本技术所示方案,下面对本技术中提到的技术术语进行介绍:
36.apk:是application package file的缩写,指android系统的应用程序安装包的文件格式。
37.广播接收器(broadcastreceiver):广播接收器作为android系统中四大组件之一,可以实现组件间的通信。具体地,电子设备中的应用程序作为广播接收者,需要注册一个或多个广播接收器,来接收到广播发送者发送的广播,以对广播做出响应。广播发送者可以为系统本身,也可以为其他应用程序。广播发送者发送的广播一般携带intent,intent中包括参数action。具体地,广播发送者可以通过action等参数构造一个intent,以形成广播(broadcast intent),然后调用相关函数向广播接收者发送该广播,例如广播发送者可调用sendbroadcast()或sendorderedbroadcast()等函数,向广播接收者发送广播。需要说明的是,在某种角度,广播可直接理解为该intent发送的广播消息。
38.上文已经示出,广播接收者要想接收到广播发送者发送的广播,需要注册广播接收器。开发人员可以通过设置广播接收者注册的广播接收器,使得该广播接收器只能捕获到开发人员期待的广播。也就是说,开发或测试人员通过上述设置,每个广播接收器可只接收和上报特定的广播。示例性地,开发和测试人员可通过action来设置每个广播接收器所能接收的广播。具体地,上文已经示出广播发送者发送广播(broadcast intent)时,intent一般都会携带action,作为intent的参数,因此,可以开发人员或者测试人员可通过设定接收方注册的每个广播接收器只能接收包含特定action的intent。
39.示例性地,如下给出了设置一个广播接收器所能接收包含特定action的intent的示例。
[0040][0041]
上文中"android.intent.action.main"和"android.intent.action.view"和"
com.baidu.input.actity",为一个或多个广播接收器所能接收的intent中的action。即广播接收器只有在接收到intent中的action为"android.intent.action.main"或者为"android.intent.action.view"或者为"com.baidu.input.actity"的intent时,才会接收并上报该intent。
[0042]
下面参照说明书附图,对本技术所示测试方法进行解释和说明。图1具体为本技术一个实施例公开的电子设备100的结构示意图,本技术所示测试方法可以用于电子设备100。图2具体为本技术一个实施例公开的对待检测应用进行测试的示意图。
[0043]
图1中电子设备100可包括智能手机(例如搭载android系统或ios系统的手机等)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mid,mobile internet device)、可穿戴设备(例如智能手表、智能手环等)或其他可以接入互联网的设备。
[0044]
电子设备100可以运行一个或多个第一应用,该第一应用指示待测试应用。示例性地,参见图2,电子设备100运行的第一应用可以具体包括第一应用a和第一应用b。
[0045]
电子设备100包括获取模块102,该获取模块102可以获取一个或多个第一应用的源代码文件。在一个示例中,获取模块102可通过逆向技术或反向工程,对一个或多个第一应用的apk通进行解密、反汇编、反编译等,以获取第一应用的源代码文件。示例性地,获取模块102可以通过dex2jar等工具对第一应用的apk反编译,从而获取第一应用的源代码文件。
[0046]
可以理解,第一应用的源代码文件是指第一应用的源代码的集合。具体地,第一应用的源代码文件可以由一种或者多种编程语言编写。示例性地,该编程语言可以包括java语言等。
[0047]
进一步地,第一应用的源代码文件中可以由一个或多个类型的文件组成,示例性地,源代码文件可以包括xml文件、smali文件或者java文件等。参见图3a,具体为本技术一个实施例提供的第一应用的源代码文件中的xml文件的示例图。参见图3b,具体为本技术一个实施例提供的第一应用的源代码文件中的smali文件的示例图。参见图3c,具体为本技术一个实施例提供的第一应用的源代码文件中的java文件的示例图。
[0048]
在本技术的一个实施例中,作为广播接收者,第一应用可注册一个或多个广播接收器。上文已经示出,每个广播接收器只能接收包含特定action的intent。参见图2,第一应用a注册了广播接收器1和广播接收器2,第一应用b注册了广播接收器1。示例性地,广播接收器1可以接收action为"android.intent.action.main"的广播intent或者action为"android.intent.action.view"的广播intent。广播接收器2用于接收action为"com.baidu.input.actity"的广播intent。第一应用注册的每个广播接收器所能接收的广播intent中的特定action,保存在第一应用的源代码文件。具体地,广播接收器的action一般都保存在xml文件、smali文件或者java文件中,因此电子设备100可以通过遍历xml文件、smali文件或者java文件中,确定每个第一应用注册的所有广播接收器所能接收的广播intent对应的特定action。
[0049]
在本技术的一个实施例中,电子设备100还包括遍历模块104,遍历模块104用于遍历一个或多个第一应用的源代码文件,确定源代码文件中是否包括的目标文件,该目标文件可包括上文所示的xml文件、smali文件或者java文件。具体地,遍历模块可以通过每个文件的后缀名确定源代码文件中的文件是否属于目标文件。
[0050]
在本技术的一个实施例中,电子设备100还包括匹配模块106,在遍历模块104确定第一应用源代码文件中的目标文件后,匹配模块106可从每个目标文件中,确定一个或多个第一应用所注册的广播接收器所能接收的广播intent的特定action。具体地,匹配模块106可以将每个目标文件中的代码进行文字匹配,确定在目标文件中的action。
[0051]
在本技术的一个实施例中,电子设备100还包括保存模块108,保存模块108可以将匹配模块到得的action进行保存。具体地,保存模块108可以将action保存到文本文件中,如txt文件中等。
[0052]
由于一个广播接收器可以被多个第一应用注册,因此,txt文件中可能存在重复的action,因此需要对重复的action去重处理。在本技术的一个实施例中,电子设备100还包括去重模块110,去重模块110可以对txt文件中重复的action去重。例如,第一应用a和第一应用b都注册了广播接收器1,那么第一应用a和第二应用b源代码文件中,都包括广播接收器1对应的action,即"android.intent.action.main",为了避免后续构造重复的测试广播,可以将在上述txt文件中仅保留一个"android.intent.action.main"。
[0053]
在本技术的一个实施例中,电子设备100还包括构造模块112,构造模块112用于读取txt文件中的action,并使用action以及特定参数构造一个或多个测试广播intent,该特定参数可以使得校验该参数的第一应用产生问题。构造模块112构造一个或多个测试广播后,将一个或多个测试广播intent发送给一个或多个第一应用,第一应用基于注册的广播接收器,接收与广播接收器对应的广播intent。
[0054]
进一步地,如下所示,为携带正常参数的intent的示例:
[0055]
public void onclick(view v){
[0056]
intent intent=new intent(action:"android.intent.action.view")
[0057]
intent.putextra(name:"key",value:"u8fd9\u662f\u4e00\u4e2a\u5bc6\u7801")
[0058]
}
[0059]
在该示例中,广播发送者所发送正常广播intent中,包括正常参数和action。其中,该示例中action具体为"android.intent.action.view",intent中所携带的正常参数为"u8fd9\u662f\u4e00\u4e2a\u5bc6\u7801"。第一应用接收到正常广播intent时,会对该正常参数进行校验,并不会产生问题。而本技术构造模块112构造的测试广播中,可以将该正常参数替换为特定参数。如果第一应用接收测试广播后,未发生问题,如crash等问题,则该第一应用没有安全问题。若第一应用发生问题,则该第一应用可能存在安全问题。
[0060]
在一个示例中,该特定参数可以包括空值。具体地,因为广播接收方会对广播intent进行数值处理,比如getextra,但是如果广播发送方所发送的广播中putextra为空,第一应用如果未对intent进行判空处理,那么就会出现报错。如下所示,为本技术一个实施例提供的广播接收方判定intent的消息是否为空的示例。
[0061]
if(intent.resolveactivity(getpackagemanager())!=null{
[0062]
//intent不为null
[0063]
}else{
[0064]
//intent为null
[0065]
}
[0066]
在本技术的一个实施例中,该构造模块112可以具体表现为一个应用,如图2中所示的第二应用。
[0067]
构造模块112在将测试广播发送给一个或多个第一应用后,开发人员或者测试人员可以通过日志工具查看是第一应用的apk是否出现异常信息,如果出现异常信息,则说明第一应用可能存在安全问题。示例性地,参见图3d,为日志工具中所抓取的信息中存在异常数据示例。
[0068]
开发人员或者测试人员不仅可以通过查看日志信息,确定该应用是否存在安全问题,还可以直接查看应用是否发生crash等问题,确定该应用是否存在安全问题。
[0069]
下面继续参见图2,对本技术所示测试方法进行进一步地解释。
[0070]
电子设备100运行第一应用a和第一应用b以及第二应用,第一应用a和第一应用b为待测试应用,第二应用可以为测试工具,测试工具用于构造测试广播,并将构造的测试广播发送给第一应用a和第一应用b,以确定第一应用a和第一应用b是否存在安全问题。
[0071]
进一步地,图2中第一应用a注册了广播接收器1和广播接收器2,第一应用b注册了广播接收器1。广播接收器1可以接收action为"android.intent.action.main"的广播或者action为"android.intent.action.view"的广播(intent)。广播接收器2用于接收action为"com.baidu.input.actity"的广播。
[0072]
电子设备100可以不区分第一应用a和第一应用b,收集所有第一应用注册的广播接收器所能接收的广播(intent)的action。第二应用可以读取电子设备所收集的第一应用的action,并使用特定参数和收集action构造一个或多个广播intent,例如,第二应用根据广播接收器1的action"android.intent.action.main"或者"android.intent.action.view",可构造两个广播intent 11和intent12。第二应用根据广播接收器2的action"com.baidu.input.actity"可构造一个广播intent 2。示例性地,intent11、intent12以及intent 2都包括上述特定参数。第二应用可以向第一应用a和第一应用b发送上述intent 11、intent12以及intent 2。可以理解,第一应用a和第一应用b都可以接收intent 11、intent12。但只有第一应用的广播接收器可以接收intent 2。
[0073]
可以理解,若是第一应用a若是接收intent 11或intent12或intent 2中的任意一个后,产生问题,则第一应用a存在安全问题。若是第一应用b若是接收intent 11或intent12中的任意一个后,出现问题,则第一应用b存在安全问题。示例性地,可以通过抓取第一应用a或第一应用b的日志信息,确定第一应用a和第一应用b是否发生问题。
[0074]
综上,本技术所示测试方法,通过批量收集待测试应用注册的广播接收器的action,然后基于该action和特定参数,构造广播intent,然后将intent发送给广播接收方,如果广播接收方出现异常,即可以确定该广播接收方(应用)是否存在问题。本技术所示方法,不需要开发人员先一个个确定广播接收器,然后进行测试,大大的节省了人力。
[0075]
参见图4,为申请一个实施例提供的测试方法的流程图,测试方法可应用于上述电子设备100,具体包括:
[0076]
步骤402,获取所述应用的源代码文件。示例性地,电子设备可以对应用的apk进行反编译获取应用的源代码文件。
[0077]
步骤404,从所述源代码文件中获取所述广播接收器的第一参数,所述第一参数指示所述广播接收器接收的广播消息中的特定参数;该第一参数可以为广播接收器所能接收
到的广播消息中的特定action。
[0078]
步骤406,获取第二预设参数,该第二预设参数可以使得校验或者异常处理该参数的应用出现问题,例如应用crash等。
[0079]
步骤408,基于所述第一参数和所述第二预设参数,构造广播消息,该广播消息可以具体为intent消息。
[0080]
步骤410,向所述广播接收器发送所述广播消息,以确定所述应用是否存在安全问题。
[0081]
参见图5,为本技术一个实施例提供的电子设备100的结构示意图。本技术所示电子设备可以执行上述方法。
[0082]
电子设备100包括,但不仅限于,处理器11、存储器12。本领域技术人员可以理解,图1仅仅是电子设备100的示例,并不构成对电子设备100的结构限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子设备100还可以包括输入输出设备、网络接入设备、总线等。
[0083]
所称处理器11可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0084]
存储器12可以是电子设备100的内部存储单元,例如电子设备100的硬盘或内存。存储器12也可以是电子设备100的外部存储设备,例如电子设备100上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器12还可以既包括电子设备100的内部存储单元也包括外部存储设备。存储器12用于存储计算机程序以及电子设备100所需的其他程序和数据。存储器12还可以用于暂时地存储已经输出或者将要输出的数据。
[0085]
在一个实施例中,电子设备100还可包括显示屏,用于显示图像,视频等,还可以用来接受用户输入的数据。显示屏包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light

emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active

matrix organic light emitting diode的,amoled),柔性发光二极管(flex light

emitting diode,fled),miniled,microled,micro

oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏104,n为大于1的正整数。
[0086]
在本技术实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0087]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台
计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
[0088]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献