一种应用中的组件检测方法和装置与流程

文档序号:18338780发布日期:2019-08-03 16:03阅读:99来源:国知局
一种应用中的组件检测方法和装置与流程

本发明涉及一种应用中的组件检测方法和装置。



背景技术:

目前,移动终端已经成为人们的生活必需品,在移动终端中安装有大量的应用,有的应用中会包括有恶意代码如盗取流量代码,在用户不知情的情况下盗取用户流量,或者有恶意厂商在应用中植入广告代码,在用户使用应用时随意跳出广告页面,影响用户使用,降低用户体验。

因此,需要一种能够检测应用中各种组件的技术方案,以提高用户体验。



技术实现要素:

有鉴于此,本发明的目的在于提供一种应用中的组件检测方法和装置,以力图解决或者至少缓解上面存在的问题。

第一方面,本发明提供一种应用中的组件检测方法,该方法包括:

根据接收到的用户输入操作,向服务器发送检测命令请求;

接收所述服务器发送的检测命令,所述检测命令包括检测组件名称;

扫描移动终端中所有的应用,得到第三方应用列表;

根据所述检测命令,在所述第三方应用列表中检测与所述检测组件名称匹配的第三方应用中的组件,生成检测结果。

可选地,在根据本发明的方法中,所述扫描移动终端中所有的所有应用,得到第三方应用列表,包括:

扫描移动终端中的所有应用得到应用列表;

利用过滤器过滤所述应用列表中的系统应用,得到第三方应用列表。

可选地,在根据本发明的方法中,所述根据所述检测命令,在所述第三方应用列表中检测与所述检测组件名称匹配的第三方应用中的组件之前,还包括:

获取所述第三方应用列表中所有第三方应用的代码文件列表;

将所述代码文件列表转换为类文件列表;

对所述类文件列表进行迭代计算得到第三方组件名称列表。

可选地,在根据本发明的方法中,所述根据所述检测命令,在所述第三方应用列表中检测与所述检测组件名称匹配的第三方应用中的组件,包括:

遍历所述第三方组件名称列表中的每个第三方应用,根据所述检测命令中的检测组件名称,确定与所述检测组件名称一致的第三方应用中的组件。

可选地,在根据本发明的方法中,所述扫描移动终端中的所有应用得到应用列表,包括:

获取所述移动终端中运行的操作系统中的包管理对象;

利用所述包管理对象提供的接口得到应用列表。

第二方面,本发明提供一种应用中的组件检测装置,该装置包括:

发送单元,用于根据接收到的用户输入操作,向服务器发送检测命令请求;

接收单元,用于接收所述服务器发送的检测命令,所述检测命令包括检测组件名称;

扫描单元,用于扫描移动终端中所有的应用,得到包括第三方应用的第三方应用列表;

处理单元,用于根据所述检测命令,在所述第三方应用列表中检测与所述检测组件名称匹配的第三方应用中的组件,生成检测结果。

可选地,在根据本发明的装置中,所述扫描单元还用于:

扫描移动终端中的所有应用得到应用列表;

利用过滤器过滤所述应用列表中的系统应用,得到所述第三方应用列表。

可选地,在根据本发明的装置中,所述处理单元还用于:

获取所述第三方应用列表中所有第三方应用的代码文件列表;

将所述代码文件列表转换为类文件列表;

对所述类文件列表进行迭代计算得到第三方组件名称列表。

可选地,在根据本发明的装置中,所述处理单元还用于:

遍历所述第三方组件名称列表中的每个第三方应用,根据所述检测命令中的检测组件名称,确定与所述检测组件名称一致的第三方应用中的组件。

可选地,在根据本发明的装置中,所述扫描单元还用于:

获取所述移动终端中运行的操作系统中的包管理对象;

利用所述包管理对象提供的接口得到所述应用列表。

根据本发明的技术方案,通过检测命令检测安卓操作系统已安装的第三方应用中所包含的组件,生成检测结果,以便开发人员根据检测结果简化应用中各项功能的代码,为后续的分析提供支持。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了一种移动终端的框图。

图2示出了本发明实施例所提供的一种应用中的组件检测方法的流程图。

图3示出了本发明实施例所提供的应用列表的示意图。

图4示出了本发明实施例所提供的一种应用中的组件检测装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是移动终端100的结构框图。具有多点触摸能力的移动终端100可以包括存储器接口102、一个或多个数据处理器、图像处理器和/或中央处理单元104,以及外围接口106。

存储器接口102、一个或多个处理器104和/或外围接口106既可以是分立元件,也可以集成在一个或多个集成电路中。在移动终端100中,各种元件可以通过一条或多条通信总线或信号线来耦合。传感器、设备和子系统可以耦合到外围接口106,以便帮助实现多种功能。例如,运动传感器110、光传感器112和距离传感器114可以耦合到外围接口106,以方便定向、照明和测距等功能。其他传感器116同样可以与外围接口106相连,例如定位系统(例如GPS接收机)、温度传感器、生物测定传感器或其他感测设备,由此可以帮助实施相关的功能。

相机子系统120和光学传感器122可以用于方便诸如记录照片和视频剪辑的相机功能的实现,其中所述相机子系统和光学传感器例如可以是电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器。

可以通过一个或多个无线通信子系统124来帮助实现通信功能,其中无线通信子系统可以包括射频接收机和发射机和/或光(例如红外)接收机和发射机。无线通信子系统124的特定设计和实施方式可以取决于移动终端100所支持的一个或多个通信网络。例如,移动终端100可以包括被设计成支持GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及BlueboothTM网络的通信子系统124。

音频子系统126可以与扬声器128以及麦克风130相耦合,以便帮助实施启用语音的功能,例如语音识别、语音复制、数字记录和电话功能。

I/O子系统140可以包括触摸屏控制器142和/或一个或多个其他输入控制器144。

触摸屏控制器142可以耦合到触摸屏146。举例来说,该触摸屏146和触摸屏控制器142可以使用多种触摸感测技术中的任何一种来检测与之进行的接触和移动或是暂停,其中感测技术包括但不局限于电容性、电阻性、红外和表面声波技术。

一个或多个其他输入控制器144可以耦合到其他输入/控制设备148,例如一个或多个按钮、摇杆开关、拇指旋轮、红外端口、USB端口、和/或指示笔之类的指点设备。一个或多个按钮(未显示)可以包括用于控制扬声器128和/或麦克风130音量的向上/向下按钮。

存储器接口102可以与存储器150相耦合。该存储器150可以包括高速随机存取存储器和/或非易失性存储器,例如一个或多个磁盘存储设备,一个或多个光学存储设备,和/或闪存存储器(例如NAND,NOR)。

存储器150可以存储操作系统152,例如Android、IOS或是Windows Phone之类的操作系统。该操作系统152可以包括用于处理基本系统服务以及执行依赖于硬件的任务的指令。存储器150还可以存储各种应用154。在移动设备运行时,会从存储器150中加载操作系统152,并且由处理器104执行。应用154在运行时,也会从存储器150中加载,并由处理器104执行。应用154运行在操作系统之上,利用操作系统以及底层硬件提供的接口实现各种用户期望的功能,如即时通信、网页浏览、图片管理等。应用可以是独立于操作系统提供的,也可以是操作系统自带的。

在各种应用154中,其中的一种应用为应用中的组件组件检测装置。下文会进行详细的叙述。

图2示出了根据本发明实施例所提供的一种应用中的组件检测方法的流程图。如图2所示,在移动终端中执行,该方法始于步骤S210。

在步骤S210中,根据接收到的用户输入操作,向服务器发送检测命令请求。

在一个实施例中,移动终端中可以显示不同的待检测选项,例如,广告检测、恶意插件检测等等,用户点击需要检测的待检测选项后,移动终端通过TCP连接或HTTPS连接向服务器发送与用户选择的待检测选项对应的如json格式的检测命令请求。检测命令请求中可以包括当前移动终端的序列号、移动终端中运行的操作系统的版本号等等,以便服务器根据移动终端返回对应的检测命令。

在步骤S220中,接收服务器发送的检测命令,检测命令包括检测组件名称。

服务器中预先存储有检测命令,不同的移动终端可以返回不同的检测命令。检测命令包括命令类型和命令内容,命令类型通过type字段的值进行区分,例如,type=1为广告插件检测、type=2为恶意代码插件检测等等。命令内容对应与命令类型存储检测内容,例如,在命令类型为1时,命令内容中存储需要检测的广告插件的厂商、广告名称关键词等等。

服务器在接收到的移动终端的检测命令请求后,首先将如json格式的检测命令请求进行解析,得到与检测命令相关的信息如移动终端序列号等,再返回包括检测组件名称的检测命令。

在步骤S230中,扫描移动终端中所有的应用,得到第三方应用列表。

移动终端接收到检测命令后,扫描移动终端中的所有应用得到应用列表,利用过滤器过滤所述应用列表中的系统应用,得到第三方应用列表。其中,获取所述移动终端中运行的操作系统中的包管理对象,利用包管理对象提供的接口得到应用列表。

具体实施过程中,由于安卓操作系统中安装的应用的属性类型是Observable<ApplicationInfo>类型,在扫描移动终端中的所有应用之前,需要创建一个ApplicationInfo对象的数据源。例如,该数据源的创建可以通过该OnSubscribe接口中的回调方法call方法触发,在调用call方法时,通过Context类中的getPackageManager方法获取安卓操作系统中的包管理对象(PackageManager对象),再调用上述Context类中的getInstalledApplications方法筛选出移动终端所有已安装的应用列表,得到ApplicationInfo类型的列表数据,通过Observable类的create方法接受一个OnSubscribe接口的实现类作为参数,完成Observable<ApplicationInfo>数据源的创建,得到应用列表(参考图3),当前应用列表中包括移动终端中安装的所有系统应用和非系统应用。

本发明的检测命令针对的是第三方应用,因此需要将非系统应用与系统应用进行区分。在运行安卓操作系统的移动终端中,系统应用中包括有ApplicationInfo.FLAG_SYSTEM,利用filter方法将包含ApplicationInfo.FLAG_SYSTEM的应用进行过滤,得到第三方应用的第三方应用列表。

在步骤S240中,根据检测命令,在第三方应用列表中检测与检测组件名称匹配的第三方应用中的组件,生成检测结果。

在一种实施方式中,获取第三方应用列表中所有第三方应用的代码文件列表,将代码文件列表转换为类文件列表,对类文件列表进行迭代计算得到第三方组件名称列表。遍历第三方组件名称列表中的每个第三方应用,根据检测命令中的检测组件名称,确定与检测组件名称一致的第三方应用中的组件。

要对移动终端中的第三方应用的插件进行分析,需要获得应用的代码文件如DexFile文件,DexFile文件是安卓操作系统中java代码经过编译后生成的class类文件的整合文件,安卓操作系统通过读取应用中的DexFile文件来运行其java代码。

在具体实施过程中,首先获得所有第三方应用中DexFile文件的路径即第三方应用的安装路径,通过map操作符将ApplicationInfo的数据源转化成DexFile格式的数据源,通过调用DexFile格式的数据源中返回的ApplicationInfo列表中的每一个对象中的sourceDir成员变量,获得该所有第三方应用在安卓操作系统中的安装路径,然后实例化一个DexFile对象,以第三方应用的安装路径作为参数,得到应用的代码文件列表。

调用Observable<ApplicationInfo>数据源中flatmap方法将DexFile文件列表源转换成每个class文件名的源,也就是获取DexFile文件中所有的class类文件名称即获取第三方应用的所有组件名称,具体实施方式如下:在调用flatmap方法时需要返回Observable<String>源,class文件名就是字符串类型String,首先创建字符串列表用来存储DexFile文件中所有类名,然后调用DexFile文件中的entries方法获得其枚举对象,然后对其枚举对象进行循环迭代,每次迭代将获得类名添加到创建的字符串列表中,迭代完成后,将生成好的第三方名称列表作为源返回。

根据检测命令中的检测组件名称,匹配第三方组件名称列表中与检测组件名称一致的第三方应用中的组件,并记录匹配组件的相关信息如应用包名称、组件名称等,将记录匹配组件的相关信息发送到服务器,以便服务器进行分析。

根据本发明的技术方案,通过检测命令检测安卓操作系统已安装的第三方应用中所包含的组件,生成检测结果,以便开发人员根据检测结果简化应用中各项功能的代码,为后续的分析提供支持。

图4示出了根据本发明提供的实施例的一种应用中的组件检测装置的示意图。如图4所示,该装置驻留在移动给终端中,包括:发送单元410、接收单元420、扫描单元430和处理单元440。

发送单元410根据接收到的用户输入操作,向服务器发送检测命令请求。

接收单元420接收所述服务器发送的检测命令,所述检测命令包括检测组件名称。

扫描单元430扫描移动终端中所有的应用,得到第三方应用列表。其中,扫描单元430扫描移动终端中的所有应用得到应用列表,利用过滤器过滤所述应用列表中的系统应用,得到第三方应用列表。在一种实施方式中,扫描单元430获取所述移动终端中运行的操作系统中的包管理对象,利用所述包管理对象提供的接口得到应用列表。

处理单元440根据所述检测命令,在所述第三方应用列表中检测与所述检测组件名称匹配的第三方应用中的组件,生成检测结果。其中,处理单元440获取所述第三方应用列表中所有第三方应用的代码文件列表,将所述代码文件列表转换为类文件列表,对所述类文件列表进行迭代计算得到第三方组件名称列表。遍历所述第三方组件名称列表中的每个第三方应用,根据所述检测命令中的检测组件名称,确定与所述检测组件名称一致的第三方应用中的组件。

本发明实施例所提供的一种应用中的组件检测装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1