CN109558304B - 一种组件关联分析方法、装置及电子设备 - Google Patents
一种组件关联分析方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109558304B CN109558304B CN201710892309.XA CN201710892309A CN109558304B CN 109558304 B CN109558304 B CN 109558304B CN 201710892309 A CN201710892309 A CN 201710892309A CN 109558304 B CN109558304 B CN 109558304B
- Authority
- CN
- China
- Prior art keywords
- network
- function
- association
- component
- target
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明实施例提供了一种组件关联分析方法、装置及电子设备,上述方法包括:获取目标应用程序的安卓安装包APK文件,对APK文件进行反编译得到目标文件;对目标文件进行静态分析,生成第一关联网络;根据目标文件中的函数的调用关系,确定第二关联网络,结合第一关联网络和第二关联网络获得第三关联网络;在运行所述目标应用程序的过程中,基于第三关联网络对用户行为进行动态监控,获得用户行为触发的组件之间的第四关联网络。应用本发明提供的组件关联分析方法,可以获得用户行为触发的组件之间的第四关联网络,该第四关联网络可以反映出使用应用程序的用户的使用习惯。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种组件关联分析方法、装置及电子设备。
背景技术
安卓应用程序是由一些零散的有联系的组件组成的,每个组件都由该组件的函数构成,组件之间通过函数调用,共同配合为用户提供服务。随着安卓系统机制的完善以及安卓应用程序功能的丰富,用户的需求也不断复杂化,单个安卓应用程序独立的工作已无法满足用户的某些需求,需要把该安卓应用程序的组件与其他安卓应用程序的组件通过函数互相调用(也可称为关联),实现彼此之间的通信,构成关联网络以满足用户的需求。对安卓应用程序的组件关联进行分析,可以获得表示安卓应用程序的组件之间的关联途径的关联网络,这对于分析安卓应用程序的权限、保障安卓系统的安全及了解用户的使用习惯具有重要意义。
现有的安卓组件关联分析通常是静态分析法,在获得应用程序的APK(AndroidPackage,安卓安装包)文件后,采用词法分析、语法分析等技术手段对APK文件进行扫描,生成应用程序的反汇编代码,然后分析反汇编代码获得应用程序的组件之间的关联网络。现有技术由于仅在代码层面对应用程序本身进行分析,得到的关联网络只能在客观上表示组件之间存在的关联,该关联网络无法反映出使用应用程序的用户的使用习惯。
发明内容
本发明实施例的目的在于提供一种组件关联分析方法、装置及电子设备,以获得用户行为触发的组件之间的关联网络,该关联网络可以反映出使用应用程序的用户的使用习惯。具体技术方案如下:
第一方面,为了达到上述目的,本发明实施例公开了一种组件关联分析方法,所述方法包括:
获取目标应用程序的安卓安装包APK文件,对所述APK文件进行反编译得到目标文件;
对所述目标文件进行静态分析,生成第一关联网络,所述第一关联网络包括所述目标文件所包含的各组件之间的关联关系;
根据所述目标文件中的函数的调用关系,确定第二关联网络,结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系;
在运行所述目标应用程序的过程中,基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络。
可选的,所述获取目标应用程序的安卓安装包APK文件包括:
获取待分析终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件。
可选的,所述根据所述目标文件中的函数的调用关系,确定第二关联网络,包括:
解析每一所述第三方应用程序的APK文件对应的目标文件,获得该目标文件中的函数;
针对获得的每一所述函数,确定该函数与该函数所属的目标文件中的其余函数的调用关系;
将确定出的各目标文件中的函数的调用关系作为第二关联网络。
可选的,所述基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络,包括:
在所述第三关联网络中的目标函数中插入检测函数,根据所述检测函数的输出结果确定所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系;其中,所述目标函数包括:目标组件和关联组件的生命周期函数、所述目标组件和所述关联组件内部的函数;所述目标组件为所述用户行为作用的组件;所述关联组件为与所述目标组件相关联的组件;
将所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系作为所述用户行为触发的组件之间的第四关联网络。
第二方面,为了达到上述目的,本发明实施例还公开了一种组件关联分析装置,所述装置包括:
目标文件获得模块,用于获取目标应用程序的安卓安装包APK文件,对所述APK文件进行反编译得到目标文件;
第一关联网络生成模块,用于对所述目标文件进行静态分析,生成第一关联网络,所述第一关联网络包括所述目标文件所包含的各组件之间的关联关系;
第三关联网络获得模块,用于根据所述目标文件中的函数的调用关系,确定第二关联网络,结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系;
第四关联网络获得模块,用于在运行所述目标应用程序的过程中,基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络。
可选的,所述目标文件获得模块包括:APK获取子模块和目标文件获得子模块;
所述APK获取子模块,用于获取待分析终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件;
所述目标文件获得子模块,用于对所述APK文件进行反编译得到目标文件。
可选的,所述第三关联网络获得模块包括:函数获得子模块、调用关系确定子模块、第二关联网络确定子模块和第三关联网络获得子模块;
所述函数获得子模块,用于解析每一所述第三方应用程序的APK文件对应的目标文件,获得该目标文件中的函数;
所述调用关系确定子模块,用于针对获得的每一所述函数,确定该函数与该函数所属的目标文件中的其余函数的调用关系;
所述第二关联网络确定子模块,用于将确定出的各目标文件中的函数的调用关系作为第二关联网络;
所述第三关联网络获得子模块,用于结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系。
可选的,所述第四关联网络获得模块包括:关系确定子模块和第四关联网络获得子模块;
所述关系确定子模块,用于在所述第三关联网络中的目标函数中插入检测函数,根据所述检测函数的输出结果确定所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系;其中,所述目标函数包括:目标组件和关联组件的生命周期函数、所述目标组件和所述关联组件内部的函数;所述目标组件为所述用户行为作用的组件;所述关联组件为与所述目标组件相关联的组件;
所述第四关联网络获得子模块,用于将所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系作为所述用户行为触发的组件之间的第四关联网络。
第三方面,为了达到上述目的,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的组件关联分析方法。
本发明实施例提供的一种组件关联分析方法及装置,可以结合静态分析得到的第一关联网络和组件内部的函数的调用关系获得第三关联网络,基于第三关联网络对用户行为进行动态监控,可以获得用户行为触发的组件之间的第四关联网络,该第四关联网络可以反映出使用应用程序的用户的使用习惯。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的组件关联示意图;
图2为本发明实施例提供的组件关联分析方法的一种流程示意图;
图3为本发明实施例提供的获得目标文件的一种流程示意图;
图4为本发明实施例提供的获得第三关联网络的一种流程示意图;
图5为本发明实施例提供的获得第四关联网络的一种流程示意图;
图6为本发明实施例提供的组件关联分析装置的一种结构示意图;
图7为本发明实施例提供的目标文件获得模块的一种结构示意图;
图8为本发明实施例提供的第三关联网络获得模块的一种结构示意图;
图9为本发明实施例提供的第四关联网络获得模块的一种结构示意图;
图10为本发明实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如今安卓手机和应用程序越来越贴近用户的生活,成为人们生活和工作中的不可或缺的一部分。安卓应用程序主要是由一些零散的有联系的组件组成,其中包括显示界面Activity、服务Service、广播Broadcast Receive和数据通信Content Provider四大组件。这四大组件分别负责不同的工作,配合着为用户提供服务。随着应用程序功能不断丰富以及安卓系统机制不断完善,用户的需求也不断复杂化,单个应用程序已无法满足用户的某些需求,因此单个应用程序需要依赖其他应用程序的组件,组件之间通过组件内部的函数的调用互相配合,以满足用户需求。组件之间的这种依赖关系可以用关联网络表示,分析组件之间的关联网络对于了解用户的使用习惯具有重要意义。
目前,终端中通常会安装多个应用程序,每个应用程序可以包含多个组件,各组件之间可以通过函数实现调用,也即,一个组件可以通过一个或多个函数的调用进而调用另一个组件,这种调用关系可称为关联关系。参见图1,图1为本发明实施例提供的组件关联示意图。图1中组件A和组件B存在关联,组件B和组件C存在关联,其中,组件A和组件B可以通过调用函数1实现关联,也可以通过调用函数2和函数3实现关联,组件B和组件C通过调用函数4和函数5实现关联。现有的安卓应用组件关联分析技术,通过反编译应用程序得到目标文件,解析目标文件,可以获得组件之间的关联网络。然而现有的组件关联技术只能得到组件A和组件B之间可以通过函数1和可以通过函数3实现关联,具体组件A如何调用函数1和如何调用函数3却无法获得。现有技术得到的组件之间的关联网络包含的信息量少,无法通过该关联网络获得用户的使用习惯。
本发明人考虑基于现有的组件关联分析技术,通过更细化的静态分析丰富关联网络,也即获得组件内部的函数的调用关系(即组件A-函数1和组件A-函数2-函数3),使得关联网络更详细,再通过动态分析技术,对用户行为进行监控,获得用户行为触发的组件之间的更详细的关联网络。
基于上述考虑,本发明提供了一种组件关联分析方法,该方法可以应用于终端,该终端可以是安装有用于进行组件关联分析的应用程序的终端,比如手机或平板电脑等移动终端,或是装有安卓模拟器的其他智能设备;或者,该方法也可以应用于终端中的某个应用程序(比如某个插件)中。本实施例以该方法应用于插件为例进行说明,其他情况与之类似。该插件可以结合静态分析得到的第一关联网络和组件内部的函数的调用关系获得第三关联网络,基于第三关联网络对用户行为定时进行动态监控,获得用户行为触发的组件之间的第四关联网络。获得第四关联网络后,可以将其中的关联数据传送至插件后台或者其他可以根据关联数据对用户行为进行分析的模块进行分析,以获得用户的使用习惯。
下面再通过具体实施例对本发明进行详细介绍。
图2为本发明实施提供的组件关联分析方法的一种流程示意图,包括:
S201:获取目标应用程序的安卓安装包APK文件,对APK文件进行反编译得到目标文件。
其中,目标应用程序可以是系统应用程序,也可以是第三方应用程序。
在获取APK文件时,可以是基于技术人员的配置,获取预设的待分析应用程序的APK文件,也可以是获取用户使用的终端上的系统应用程序和已经安装的全部第三方应用程序的APK文件。
APK(Android Package,安卓安装包)文件,是一种可以直接在安卓模拟器或安卓手机中执行安装的程序文件。
反编译是通过使用APK反编译工具对APK文件进行反编译,可以得到源文件和资源文件。进而可以对得到的源文件和资源文件中的源代码进行分析统计,也可以对源文件和资源文件处理后再进行编译,以达到个性化定制APK文件等目的。其中,源文件可以是smali文件。
用户可以通过应用程序的下载平台,在智能终端中下载自己需要的应用程序,智能终端则可以从下载平台中获取该应用程序的APK文件,智能终端会为每一个应用程序创建一个文件夹,将该应用程序的APK文件存储到该文件夹中,进而基于该APK文件安装该应用程序。
在本发明实施例中,应用本发明组件关联分析方法的插件可以安装到智能终端上,插件在运行过程中,可以周期性的对使用该智能终端的用户的用户行为进行监控,也可以根据插件后台指令的指示对用户行为进行监控。对用户行为进行监控时,插件可以读取上述存储应用程序APK文件的文件夹,获取APK文件,对APK文件进行反编译,获得smali文件(即目标文件),分析smali文件中的源代码,得到目标文件包含的组件及这些组件之间的关联关系,即获得组件之间的一种关联网络。
其中,插件可以获取智能终端上的所有系统应用程序和用户安装的第三方应用程序的APK文件。可选的,参见图3,S201的处理过程可以包括:
S2011:获取待分析终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件。
一种实现方式中,上述插件可以获取用户使用的智能终端上的所有系统应用程序的APK文件和所有用户已安装的第三方应用程序的APK文件。
具体的,插件可以通过读取system/app文件夹,获取所有系统应用程序的APK文件,读取data/app文件夹,获取所有已安装的第三方应用程序的APK文件。
插件获取用户使用的智能终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件,能够获得用户行为所能触发的最大范围的关联网络。
S2012:对APK文件进行反编译得到目标文件。
上述插件获取目标应用程序的APK文件后,可以利用自身内部集成的反编译工具对APK文件进行反编译,获得目标文件。对APK文件进行反编译的过程可以参照上述步骤S201的相关说明,在此不再赘述。
S202:对目标文件进行静态分析,生成第一关联网络。
其中,所述第一关联网络包括所述目标文件所包含的各组件之间的关联关系。
在本实施例中,上述插件获得目标文件后,可以针对目标文件中的每个函数,构建抽象语法树,通过每个函数的抽象语法树可以获得每个函数的控制流图,利用控制流图可以获得组件关联的关键API(Application Programming Interface,应用程序编程接口)(如start Activity()、bind Service()等),对获得的关键API中的intent的参数进行分析,得到互相关联的组件,也即针对组件A得到如图1中所示的组件A-函数1-组件B和组件A-函数3-组件B。
其中,抽象语法树是根据目标文件中的每个函数源代码的语法结构,省略一些细节(比如:括号没有生成节点),抽象成树形表达的一种结构。抽象语法树能够使函数源代码层次更加清晰。
intent是不同组件之间相互关联的纽带,是一个保存着不同组件之间关联条件的intent对象,一个intent对象表达一个目的或期望,包含其所期望的服务或动作、与动作有关的数据等。安卓系统则根据此intent对象包含的内容负责配对,找出相关联的组件,然后将intent对象传递给所找到的组件。
例如,针对组件A,上述互相关联的组件及这些组件之间的关联关系(组件A-函数1-组件B和组件A-函数3-组件B)也即是第一关联网络。
S203:根据目标文件中的函数的调用关系,确定第二关联网络,结合第一关联网络和第二关联网络获得第三关联网络。
其中,第三关联网络包括目标文件所包含的各组件之间的关联关系和目标文件中的函数的调用关系。
本实施例中,针对组件A,上述插件可以通过对目标文件进行解析,获得目标文件中的函数的调用关系,也即第二关联网络(组件A-函数1和组件A-函数2-函数3)。把第一关联网络中组件之间的关联关系(组件A-函数1-组件B和组件A-函数3-组件B)和第二关联网络中函数的调用关系(组件A-函数1和组件A-函数2-函数3)进行组合,获得第三关联网络(组件A-函数1-组件B和组件A-函数2-函数3-组件B)。第三关联网络不仅能够体现组件之间的关联,且能够体现组件之间通过函数的调用关系。
可选的,可以针对第三方应用程序进行分析,确定第二关联网络,参见图4,对于第三方应用程序的数目为多个的情况,S203的处理过程可以包括以下步骤:
S2031:解析每一第三方应用程序的APK文件对应的目标文件,获得该目标文件中的函数。
一种实现方式中,上述插件可以针对每一第三方应用程序的APK文件对应的目标文件,识别获得这些目标文件中的所有函数。
具体的,上述函数可以包括目标文件中内部类的成员函数和静态函数。
S2032:针对获得的每一函数,确定该函数与该函数所属的目标文件中的其余函数的调用关系。
一种实现方式中,上述插件可以针对获得的每一函数,对该函数中指令的进行分析,确定函数的调用关系。
具体的,由于组件互相关联时都是利用统一的API,而系统API不会产生组件的关联,因此针对每一函数,可以判断该函数的invoke指令的目标函数是否为系统API,如果该函数的invoke指令的目标函数不是系统API,则确定该函数与其目标函数之间为应用程序内部的函数的调用关系。
示例性的,针对组件A,该步骤可以确定出组件A直接调用函数1,及组件A通过函数2进而调用函数3。
S2033:将确定出的各目标文件中的函数的调用关系作为第二关联网络。
各目标文件中的函数的调用关系包括各组件与函数实现调用的具体途径,例如,针对组件A,可以得到组件A-函数1和组件A-函数2-函数3,针对组件B,可以得到组件B-函数4-函数5。上述针对各组件得到的函数的调用关系也即第二关联网络。
S2034:结合第一关联网络和第二关联网络获得第三关联网络。
其中,第三关联网络包括目标文件所包含的各组件之间的关联关系和目标文件中的函数的调用关系。
此处结合第一关联网络和第二关联网络获得第三关联网络过程可以参照上述步骤S203的相关说明,在此不再赘述。
将针对目标文件的每一函数获得的函数的调用关系作为第二关联网络,同时结合第一关联网络得到第三关联网络,得到的第三关联网络既能够体现组件之间的关联,又能够体现组件之间的函数的调用关系。因此基于第三关联网络对用户行为进行分析,能够得到更具体的分析结果。
S204:在运行目标应用程序的过程中,基于第三关联网络对用户行为进行动态监控,获得用户行为触发的组件之间的第四关联网络。
其中,动态监控是一种实时监测用户行为以实现组件关联分析的测试手段,本实施例中,可以在源程序中添加检测函数,当目标程序运行后,根据检测函数的输出结果,实现对源程序语句的执行、变量的变化等情况进行检查。
一种实现方式中,可以在第三关联网络中预设的位置插入检测函数(可以在第三关联网络中的函数的入口处插入计数语句),当用户在某应用程序中进行操作时,终端可以接收到相应的操作指令,进而根据该操作指令运行相应的应用程序(即调用应用程序的组件)。在调用应用程序的组件的过程中,会触发组件内部的函数的调用,终端可以同时执行检测函数。经过预设时间后,可以通过检查检测函数的输出结果(根据计数语句的输出结果),获得被用户行为触发的组件及组件之间的函数的调用关系,也即第四关联网络,利用该第四关联网络对用户行为进行分析,可以获得用户的使用习惯。
其中,可以在第三关联网络中的用户行为所作用的组件及相关联的组件的函数中插入检测函数进行用户行为的监控。可选的,参见图5,S204的处理过程可以包括:
S2041:在第三关联网络中的目标函数中插入检测函数,根据检测函数的输出结果确定用户行为触发的组件之间的关联关系和用户行为触发的函数的调用关系。
其中,目标函数包括:目标组件和关联组件的生命周期函数、目标组件和关联组件内部的函数;目标组件为用户行为作用的组件;关联组件为与目标组件相关联的组件。
一种实现方式中,针对用户行为,首先确定用户行为所作用的组件,也即目标组件,同时获得与目标组件直接关联和间接关联的所有组件,也即关联组件。当两个组件直接通过函数的调用关系相关联,则称两个组件直接关联,当两个组件通过第三个组件相关联,则称两个组件间接关联,参见图1,图1中,组件A与组件B直接关联,组件A与组件C间接关联。
示例性的,在获得目标组件时,可以首先通过布局可扩展标记语言xml文件确定用户行为所作用的控件所属的Activity组件。接着定位用户行为在应用程序中的响应回调函数,如按钮的监听事件的on Click(),通常可以在Activity的on Create()函数中找到按钮点击事件的设置,从而定位on Click()函数及所属的类。
对用户行为进行监控,可以基于Xposed模块实现。具体的,对用户行为进行监控的过程可以为:在运行目标程序的过程中,插件利用Xposed模块可以在第三关联网络中的目标组件和关联组件的生命周期函数中插入检测函数(可以在函数的入口处插入计数语句),当用户在某应用程序中进行操作时,终端可以接收到相应的操作指令,进而根据该操作指令运行相应的应用程序(即调用应用程序的组件)。在调用应用程序的组件的过程中,会触发组件内部的函数的调用,终端可以同时执行计数语句。经过预设时间后,插件根据计数语句的输出结果,确定目标组件和关联组件中被调用的组件,也即获得该段时间内被用户行为触发的组件(即组件A-组件B)。同时插件可以在第三关联网络中的调用的函数中插入检测函数(可以在函数的入口处插入计数语句),当用户在某应用程序中进行操作时,终端可以接收到相应的操作指令,进而根据该操作指令运行相应的应用程序(即调用应用程序的组件)。在调用应用程序的组件的过程中,会触发组件内部的函数的调用,终端可以同时执行计数语句。经过预设时间后,插件根据计数语句的输出结果,确定第三关联网络中被执行的函数的调用关系(即执行函数1或执行函数2-函数3),也即获得该段时间内被用户行为触发的组件之间的函数的调用关系。
S2042:将用户行为触发的组件之间的关联关系和用户行为触发的函数的调用关系作为用户行为触发的组件之间的第四关联网络。
一种实现方式中,针对组件A,用户行为触发的组件之间的可以是组件A-组件B,用户行为触发的函数的调用关系可以是函数2-函数3,因此综合两者可以得到用户行为触发的关联网络为组件A-函数2-函数3-组件B,也即第四关联网络。可以看出,第四关联网络为第三关联网络的一部分,该部分也即用户行为触发的网络部分。
通过在目标函数中针对性地插入检测函数获得第四关联网络。检测函数的结果能清晰的表明被用户行为触发的组件和函数的调用关系,得到的第四关联网络能够全面、具体、准确地反映出用户使用应用程序的使用习惯。
与上述方法实施例相对应,参见图6,图6为本发明实施提供的组件关联分析装置的一种结构示意图,包括:目标文件获得模块601、第一关联网络生成模块602、第三关联网络获得模块603和第四关联网络获得模块604。
其中,所述目标文件获得模块601,用于获取目标应用程序的安卓安装包APK文件,对所述APK文件进行反编译得到目标文件;
所述第一关联网络生成模块602,用于对所述目标文件进行静态分析,生成第一关联网络,所述第一关联网络包括所述目标文件所包含的各组件之间的关联关系;
所述第三关联网络获得模块603,用于根据所述目标文件中的函数的调用关系,确定第二关联网络,结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系;
所述第四关联网络获得模块604,用于在运行所述目标应用程序的过程中,基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络。
由以上可见,本实施例提供的方案中,结合静态分析得到的第一关联网络和根据目标文件中的函数的调用关系得到的第二关联网络,获得第三关联网络,基于第三关联网络对用户行为进行动态监控,获得用户行为触发的组件之间的第四关联网络。该第四关联网络包含了用户行为触发的组件及组件之间的函数的调用关系,对第四关联网络进行分析可以获得用户的使用习惯。
在本发明的一个具体实施例中,参见图7,图7为本发明实施提供的目标文件获得模块的一种结构示意图,其中,所述目标文件获得模块601,包括:APK获取子模块6011和目标文件获得子模块6012。
其中,所述APK获取子模块6011,用于获取待分析终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件;
所述目标文件获得子模块6012,用于对所述APK文件进行反编译得到目标文件。
由以上可见,本实施例提供的方案中,目标应用程序的APK文件采用了待分析终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件,因此能够获得用户行为所能触发的最大范围的关联网络,以更全面地分析用户的使用习惯。
在本发明的一个具体实施例中,参见图8,图8为本发明实施提供的第三关联网络获得模块的一种结构示意图;其中,所述第三关联网络获得模块603,包括:函数获得子模块6031、调用关系确定子模块6032、第二关联网络确定子模块6033和第三关联网络获得子模块6034。
其中,所述函数获得子模块6031,用于解析每一所述第三方应用程序的APK文件对应的目标文件,获得该目标文件中的函数;
所述调用关系确定子模块6032,用于针对获得的每一所述函数,确定该函数与该函数所属的目标文件中的其余函数的调用关系;
所述第二关联网络确定子模块6033,用于将确定出的各目标文件中的函数的调用关系作为第二关联网络;
所述第三关联网络获得子模块6034,用于结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系。
由以上可见,本实施例提供的方案中,把针对目标文件的每一函数获得的函数的调用关系作为第二关联网络,结合第一关联网络得到第三关联网络,得到的第三关联网络既能够体现组件之间的关联,又能够体现组件之间的函数的调用关系。基于第三关联网络对用户行为进行分析,能够得到更具体地分析结果。
在本发明的一个具体实施例中,参见图9,图9为本发明实施提供的第四关联网络获得模块的一种结构示意图;其中,所述第四关联网络获得模块604,包括:关系确定子模块6041和第四关联网络获得子模块6042。
其中,所述关系确定子模块6041,用于在所述第三关联网络中的目标函数中插入检测函数,根据所述检测函数的输出结果确定所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系;其中,所述目标函数包括:目标组件和关联组件的生命周期函数、所述目标组件和所述关联组件内部的函数;所述目标组件为所述用户行为作用的组件;所述关联组件为与所述目标组件相关联的组件。
所述第四关联网络获得子模块6042,用于将所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系作为所述用户行为触发的组件之间的第四关联网络。
由以上可见,本实施例提供的方案中,通过在目标函数中针对性地插入检测函数获得第四关联网络。检测函数的结果能清晰的表明被用户行为触发的组件和函数的调用关系,得到的第四关联网络能够全面、具体地反映出用户使用应用程序的使用习惯。
本发明实施例还提供了一种电子设备,如图10所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
获取目标应用程序的安卓安装包APK文件,对所述APK文件进行反编译得到目标文件;
对所述目标文件进行静态分析,生成第一关联网络,所述第一关联网络包括所述目标文件所包含的各组件之间的关联关系;
根据所述目标文件中的函数的调用关系,确定第二关联网络,结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系;
在运行所述目标应用程序的过程中,基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (7)
1.一种组件关联分析方法,其特征在于,所述方法包括:
获取目标应用程序的安卓安装包APK文件,对所述APK文件进行反编译得到目标文件;
对所述目标文件进行静态分析,生成第一关联网络,所述第一关联网络包括所述目标文件所包含的各组件之间的关联关系;
根据所述目标文件中的函数的调用关系,确定第二关联网络,结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系;
在运行所述目标应用程序的过程中,基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络;
所述基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络,包括:
在所述第三关联网络中的目标函数中插入检测函数,根据所述检测函数的输出结果确定所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系;其中,所述目标函数包括:目标组件和关联组件的生命周期函数、所述目标组件和所述关联组件内部的函数;所述目标组件为所述用户行为作用的组件;所述关联组件为与所述目标组件相关联的组件;
将所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系作为所述用户行为触发的组件之间的第四关联网络。
2.根据权利要求1所述的方法,其特征在于,所述获取目标应用程序的安卓安装包APK文件包括:
获取待分析终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标文件中的函数的调用关系,确定第二关联网络,包括:
解析每一所述第三方应用程序的APK文件对应的目标文件,获得该目标文件中的函数;
针对获得的每一所述函数,确定该函数与该函数所属的目标文件中的其余函数的调用关系;
将确定出的各目标文件中的函数的调用关系作为第二关联网络。
4.一种组件关联分析装置,其特征在于,所述装置包括:
目标文件获得模块,用于获取目标应用程序的安卓安装包APK文件,对所述APK文件进行反编译得到目标文件;
第一关联网络生成模块,用于对所述目标文件进行静态分析,生成第一关联网络,所述第一关联网络包括所述目标文件所包含的各组件之间的关联关系;
第三关联网络获得模块,用于根据所述目标文件中的函数的调用关系,确定第二关联网络,结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系;
第四关联网络获得模块,用于在运行所述目标应用程序的过程中,基于所述第三关联网络对用户行为进行动态监控,获得所述用户行为触发的组件之间的第四关联网络;
所述第四关联网络获得模块包括:关系确定子模块和第四关联网络获得子模块;
所述关系确定子模块,用于在所述第三关联网络中的目标函数中插入检测函数,根据所述检测函数的输出结果确定所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系;其中,所述目标函数包括:目标组件和关联组件的生命周期函数、所述目标组件和所述关联组件内部的函数;所述目标组件为所述用户行为作用的组件;所述关联组件为与所述目标组件相关联的组件;
所述第四关联网络获得子模块,用于将所述用户行为触发的组件之间的关联关系和所述用户行为触发的函数的调用关系作为所述用户行为触发的组件之间的第四关联网络。
5.根据权利要求4所述的装置,其特征在于,所述目标文件获得模块包括:APK获取子模块和目标文件获得子模块;
所述APK获取子模块,用于获取待分析终端上的所有系统应用程序的APK文件和所有已安装的第三方应用程序的APK文件;
所述目标文件获得子模块,用于对所述APK文件进行反编译得到目标文件。
6.根据权利要求5所述的装置,其特征在于,所述第三关联网络获得模块包括:函数获得子模块、调用关系确定子模块、第二关联网络确定子模块和第三关联网络获得子模块;
所述函数获得子模块,用于解析每一所述第三方应用程序的APK文件对应的目标文件,获得该目标文件中的函数;
所述调用关系确定子模块,用于针对获得的每一所述函数,确定该函数与该函数所属的目标文件中的其余函数的调用关系;
所述第二关联网络确定子模块,用于将确定出的各目标文件中的函数的调用关系作为第二关联网络;
所述第三关联网络获得子模块,用于结合所述第一关联网络和所述第二关联网络获得第三关联网络,所述第三关联网络包括所述目标文件所包含的各组件之间的关联关系和所述目标文件中的函数的调用关系。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-3任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710892309.XA CN109558304B (zh) | 2017-09-27 | 2017-09-27 | 一种组件关联分析方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710892309.XA CN109558304B (zh) | 2017-09-27 | 2017-09-27 | 一种组件关联分析方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558304A CN109558304A (zh) | 2019-04-02 |
CN109558304B true CN109558304B (zh) | 2020-10-30 |
Family
ID=65864000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710892309.XA Active CN109558304B (zh) | 2017-09-27 | 2017-09-27 | 一种组件关联分析方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558304B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110378126B (zh) * | 2019-07-26 | 2021-03-26 | 北京中科微澜科技有限公司 | 一种漏洞检测方法及系统 |
CN111400197B (zh) * | 2020-05-29 | 2020-09-29 | 支付宝(杭州)信息技术有限公司 | 应用程序包分析方法、装置及计算机可读存储介质 |
CN111966421B (zh) * | 2020-06-29 | 2024-01-09 | 北京百度网讯科技有限公司 | 页面组件的运行监测方法、装置、设备和存储介质 |
CN112068871B (zh) * | 2020-08-12 | 2021-09-14 | 海信集团有限公司 | 电子设备和应用的管理方法 |
CN112560035B (zh) * | 2020-12-15 | 2024-04-02 | 深圳市和讯华谷信息技术有限公司 | 应用检测方法、装置、设备及存储介质 |
CN113051954A (zh) * | 2021-04-19 | 2021-06-29 | 杭州拼便宜网络科技有限公司 | 一种扫码登录方法、装置、电子设备和存储介质 |
CN114518899A (zh) * | 2022-02-11 | 2022-05-20 | 北京云思智学科技有限公司 | 一种反向的软件包追踪管理方法、系统及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104217164A (zh) * | 2014-09-11 | 2014-12-17 | 工业和信息化部电子第五研究所 | 智能移动终端恶意软件的检测方法与装置 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105335655A (zh) * | 2015-09-22 | 2016-02-17 | 南京大学 | 一种基于敏感行为识别的安卓应用安全性分析方法 |
CN106845234A (zh) * | 2017-01-05 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种基于函数流关键点监控的安卓恶意软件检测方法 |
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
-
2017
- 2017-09-27 CN CN201710892309.XA patent/CN109558304B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104217164A (zh) * | 2014-09-11 | 2014-12-17 | 工业和信息化部电子第五研究所 | 智能移动终端恶意软件的检测方法与装置 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105335655A (zh) * | 2015-09-22 | 2016-02-17 | 南京大学 | 一种基于敏感行为识别的安卓应用安全性分析方法 |
CN106845234A (zh) * | 2017-01-05 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种基于函数流关键点监控的安卓恶意软件检测方法 |
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
Non-Patent Citations (1)
Title |
---|
肖卫,张源,杨珉.安卓应用软件中Intent数据验证漏洞的检测方法.《小型微型计算机系统》.2017,第38卷(第4期), * |
Also Published As
Publication number | Publication date |
---|---|
CN109558304A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558304B (zh) | 一种组件关联分析方法、装置及电子设备 | |
US10481964B2 (en) | Monitoring activity of software development kits using stack trace analysis | |
CN111124906A (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
CN104732146A (zh) | 一种Android程序漏洞检测方法及系统 | |
CN110262851B (zh) | 接口配置方法及装置 | |
CN111274131A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN105550104A (zh) | 应用程序性能测试方法及装置 | |
CN111190573A (zh) | 应用程序埋点方法、装置和电子设备 | |
CN111427771A (zh) | 一种代码覆盖率分析方法、设备、服务器及可读存储介质 | |
CN112527459A (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
CN110188308B (zh) | 客户端自动打点上报方法、存储介质、设备及系统 | |
CN111309622A (zh) | 应用程序测试方法、装置、终端设备以及存储介质 | |
CN108595656B (zh) | 一种数据的处理方法及系统 | |
CN108509228B (zh) | 加载页面的方法、终端设备及计算机可读存储介质 | |
CN108255672B (zh) | 数据校验的方法、装置和存储介质以及电子设备 | |
CN113971257A (zh) | 混合应用的功能菜单访问方法及装置 | |
CN106383869B (zh) | 一种获取用户行为信息的方法及装置 | |
CN106569868B (zh) | 一种基于Gradle的编译优化方法及装置 | |
CN111124627B (zh) | 应用程序的调起者确定方法、装置、终端及存储介质 | |
CN110297639B (zh) | 用于检测代码的方法和装置 | |
CN116627850B (zh) | 函数调试方法、装置、存储介质以及电子设备 | |
CN105657551A (zh) | 智能电视对模拟按键的响应方法及装置 | |
CN108133123B (zh) | 一种应用程序的识别方法及系统 | |
CN111045724A (zh) | 调用链信息的查询方法、装置和可读存储介质 | |
CN108037914B (zh) | 一种安卓原生系统结合js开发的方法及装置 |
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 |