CN114547604A - 一种应用检测方法、装置、存储介质及电子设备 - Google Patents
一种应用检测方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN114547604A CN114547604A CN202111574727.7A CN202111574727A CN114547604A CN 114547604 A CN114547604 A CN 114547604A CN 202111574727 A CN202111574727 A CN 202111574727A CN 114547604 A CN114547604 A CN 114547604A
- Authority
- CN
- China
- Prior art keywords
- file
- taint
- target
- class
- target application
- 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
Links
Images
Classifications
-
- 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
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种应用检测方法、装置、存储介质及电子设备,其中,方法包括:获取针对应用的目标应用包以及应用基准包,对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。采用本申请实施例,可以提高应用检测效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用检测方法、装置、存储介质及电子设备。
背景技术
随着网络技术的快速发展,用户在使用应用时面临的安全威胁越来越多,应用的隐私数据泄露问题也愈发重视。应用的应用安装包在开发阶段应至少满足安全合规的要求;基于此,通常会涉及到对应用的应用安装包进行应用检测,以降低安全风险。
发明内容
本申请实施例提供了一种应用检测方法、装置、存储介质及电子设备,所述技术方案如下:
第一方面,本申请实施例提供了一种应用检测方法,所述方法包括:
获取针对应用的目标应用包以及应用基准包;
对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
第二方面,本申请实施例提供了一种应用检测装置,所述装置包括:
获取模块,用于获取应用的目标应用包以及应用基准包;
处理模块,用于对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
检测模块,用于基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请一个或多个实施例中,电子设备获取针对应用的目标应用包以及应用基准包,然后对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,就可以基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合,通过基于应用基准包所确定的差异类集合可以避免对目标应用包的全量检测分析,电子设备可以仅需基于差异类集合对目标应用包指示的差异代码进行静态污点检测即可,降低了应用检测处理量避免冗余重复,可大幅提高应用检测的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用检测方法的流程示意图;
图2是本申请实施例提供的一种应用检测方法的流程示意图;
图3是本申请实施例提供的应用检测方法涉及的一种文件匹配的场景示意图;
图4是本申请实施例提供的应用检测方法涉及的一种文件匹配的场景示意图;
图5是本申请实施例提供的一种应用检测方法的流程示意图;
图6是本申请实施例提供的应用检测方法涉及的一种检测入口函数集合确定的场景示意图;
图7为本申请实施例提供的一种应用检测***的架构示意图;
图8是本申请实施例提供的一种应用检测装置的结构示意图;
图9是本申请实施例提供的一种处理模块的结构示意图;
图10是本申请实施例提供的一种电子设备的结构示意图;
图11是本申请实施例提供的操作***和用户空间的结构示意图;
图12是图11中安卓操作***的架构图;
图13是图11中IOS操作***的架构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面结合具体的实施例对本申请进行详细说明。
在一个实施例中,如图1所示,特提出了一种应用检测方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的应用检测装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。所述应用检测装置可以为电子设备,包括但不限于:个人电脑、平板电脑、手持设备、车载设备、服务器、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中终端设备可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、5G网络或未来演进网络中的设备等。
具体的,该应用检测方法包括:
S101:获取针对应用的目标应用包以及应用基准包。
所述应用可以理解为一些终端搭载操作***本身自带的应用,可以是第三方应用,所述第三方应用是指由第三方开发、非终端操作***本身自带的应用,包括一些由第三方开发的应用、小程序、插件等。在一些实施例中,可以基于应用对应的应用安装包(apk)进行应用安装或应用更新。在本申请中,目标应用包和应用基准包可以理解为针对同一应用的不同应用版本的应用安装包。
所述目标应用包与所述应用基准包对应的应用安装包(apk)版本不同,通常目标应用包的apk版本大于应用基准包的apk版本。
在一个或多个实施例中,目标应用包可以是当前待更新版本的针对应用的应用安装包;应用基准包可以理解为针对应用历史发布的历史应用安装包。应用基准包具体可基于实际应用场景进行设置,目标应用包的apk版本大于或早于应用基准包的apk版本即可。
可以理解的,在应用更新以及应用安装等场景中,由于应用面临的安全威胁越来越多,应用设计的隐私数据泄露问题也愈发重视,应用的目标应用包的开发应至少满足安全合规的要求,在实际应用阶段,通常会涉及到对应用的应用安装包进行应用检测,而在应用检测中常常会涉及到静态污点传播检测,静态污点传播检测(简称静态污点检测)是指在不运行且不修改应用安装包的代码的前提下,通过分析应用程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点.,经静态污点检测之后即可得到该应用对应的目标应用包的污点路径结果。
在一些实施例中,应用开发端在完成应用的应用版本的目标应用包的开发之后,可以将目标应用包上传至电子设备(如服务平台),此时电子设备即可获取到应用的目标应用包;另外,电子设备可保存有针对应用的历史版本的历史应用安装包,电子设备可从中获取作为与目标应用包属于同一应用的应用基准包。
S102:对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合。
可以理解的,反编译比对处理可以理解为通过对应用安装包(如目标应用包、应用基准包)进行反编译可以得到其对应的反编译文件,以通过对目标应用包的反编译文件和应用基准包对应的反编译文件进行比对,来确定相对于应用基准包的针对目标应用包的差异类集合。
可以理解的,所述差异类集合包含至少一个表征“目标应用包的反编译文件和应用基准包对应的反编译文件”的差异的类(也可理解为方法类、函数类);在一些实施例中,差异类集合可以是所述目标应用包相对于应用基准包对应的反编译文件所删减的删减类集合;差异类集合可以是所述目标应用包相对于应用基准包对应的反编译文件所增加的增量类集合
在一些实施方式中,对应用安装包(如目标应用包、应用基准包)进行反编译可以得到的反编译文件可以理解为:通过逆向工程对检测对象的数据(也即应用安装包)进行逆向编译,从而得到的反编译文件。在一些实施例中,对检测对象的逆向编译过程是指从而检测对象对应的已编译的文件获得相应的未编译的文件,以检测对象为常见的检测应用为例,即通过逆向工程对应用的待检测的应用安装包进行逆向编译,从而可以获得反编译文件,反编译文件至少可以是smali代码文件,在一些实施例中反编译文件还可以是各xml资源文件以及 AndroidManifest.xml布局文件等。
可以理解的,电子设备获取的应用的目标应用包(也即待检测对象),在对目标应用包进行逆向编译时,可以预先对该目标应用包进行解包之后再逆向编译(可理解为反编译),以应用安装包为安卓(Android)应用程序包为例进行释义,该应用安装包通常为“.APK文件格式”的文件,“.APK文件格式”可以理解为一种ZIP格式的压缩文件;电子设备可以向对该应用安装包进行解包,解包过程可以为从应用安装包文件中得到classes.dex(编译后的代码文件)、resources.arsc(编译后的资源文件)、AndroidManifest.xml(编译后的布局文件),然后通常基于逆向工程中的逆向编译工具对上述编译后的文件(如编译后的代码文件、资源文件、布局文件)进行反编译,可以得到“编译后的文件”编译之前的“未编译文件”,即获得smali代码文件、各xml资源文件以及AndroidManifest.xml布局文件等,在一个或多个实施例中,反编译文件至少可以是smali文件树,smali文件树指将apk反编译后生成的smali目录下的文件集合,这些smali文件以“包名+类名”命名并以“.smali”结尾。
可选的,通过获取目标应用包和应用基准包进行反编译后的反编译文件(目标应用包对应的反编译文件、应用基准包对应的反编译文件),以通过对目标应用包的反编译文件和应用基准包对应的反编译文件进行数据比对,来确定相对于应用基准包的针对目标应用包的差异类集合。
可选的,电子设备可仅对目标应用包采用逆向工程进行反编译,得到目标应用包的反编译文件;而应用基准包的反编译文件可以不必进行反编译处理,可以是直接获取到的,通常应用的应用基准包在发布前,电子设备已对应用基准包进行应用检测,应用检测过程会涉及到生成应用基准包对应的反编译文件,如生成应用基准包对应的smali文件树,电子设备可以将应用基准包对应的反编译文件进行保存。在具体实施中,在涉及执行“对所述目标应用包和所述应用基准包进行反编译比对处理”的步骤时,可直接获取到应用基准包对应的反编译文件而无需重新对应用基准包进行逆向编译。
S103:基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
可以理解的,电子设备通过对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,差异类集合一定程度上反馈目标应用包与应用基准包的代码差异,为了提高应用检测效率,本申请在对目标应包进行静态污点检测时,不采用对目标应用包所对应的全部代码进行应用检测的形式,而是确定目标应用包相对于基准应用包的差异类集合,由于基准应用包电子设备已经预先完成静态污点检测得到了污点路径集合,这样可仅基于差异类集合对目标应用包进行静态污点检测,在一些实施例中可以理解为静态污点检测可基于差异类集合对目标应用包指示的差异代码进行静态污点检测即可,这样可大幅提高针对目标应用包进行应用检测的效率。也实现了对相关场景下,应用检测时仅能基于相关污点分析工具对apk全面扫描分析的改善,实现了对新版本对应目标应用包的的增量代码的针对性静态污点检测,同时可避免污点检测冗余重复,可实现对目标应用包的快速发布,节省了检测资源。
可以理解的,电子设备基于差异类集合确定目标应用包相对于应用基准包是否存在增量代码,若存在增量代码,电子设备可调用用于静态污点检测的污点检测工具对差异类集合在目标应用包指示的增量代码进行静态污点检测,通过检测增量代码指示的应用程序变量间的数据依赖关系来检测数据能否从污点传播到污点汇聚点,进而确定本次采用污点检测工具得到的第一污点路径集合。其中,电子设备可以获取应用基准包对应的第二污点路径集合,然后根据差异类集合对第一污点路径集合和第二污点路径集合进行数据拟合,得到针对目标应用包的污点路径集合。
可以理解的,若不存在增量代码,此时差异类集合通常为删减类集合,电子设备可以无需调用污点检测工具对目标应用包进行检侧,而是基于应用基准包对应的第二污点路径集合来结合删减类集合确定污点路径集合,具体而言忽略删减类集合在第二污点路径集合指示的目标污点路径,来以此得到忽略处理目标污点路径之后不含目标污点路径的第二污点路径集合作为针对目标应用包的污点路径集合。
在本申请实施例中,电子设备获取针对应用的目标应用包以及应用基准包,然后对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,就可以基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合,通过基于应用基准包所确定的差异类集合可以避免对目标应用包的全量检测分析,电子设备可以仅需基于差异类集合对目标应用包指示的差异代码进行静态污点检测即可,降低了应用检测处理量避免冗余重复,可大幅提高应用检测的效率。
请参见图2,图2是本申请提出的一种应用检测方法的另一种实施例的流程示意图。具体的:
S201:获取针对应用的目标应用包以及应用基准包。
具体可参见S101,此处不再赘述。
S202:确定所述应用基准包对应的第一反编译文件,确定所述目标应用包对应的第二反编译文件;
所述第一反编译文件可以理解为电子设备通过逆向工程对应用的待检测的应用基准包进行逆向编译,从而得到的反编译文件;第一反编译文件至少可以是应用基准包对应的smali 代码文件,在一些实施例中,第一反编译文件可以是smali文件树,smali文件树指将应用基准包apk反编译后生成的smali目录下的smali文件的文件集合,这些smali文件以“包名+ 类名”命名并以“.smali”结尾。
所述第二反编译文件可以理解为电子设备通过逆向工程对应用的待检测的目标应用包进行逆向编译,从而得到的反编译文件;第二反编译文件至少可以是应用基准包对应的smali 代码文件,在一些实施例中,第二反编译文件可以是smali文件树,smali文件树可以理解为将目标应用包apk反编译后生成的smali目录下的smali文件的文件集合,这些smali文件以“包名+类名”命名并以“.smali”结尾。
可选的,第一反编译文件和第二反编译文件可以采用逆向工程中的apk编译工具得到,如apk编译工具:apktool。
可以理解的,以时间维度来看,应用基准包的安装包版本在目标应用包的安装包版本之前。
可以理解的,电子设备在确定第一反编译文件和第二反编译文件之后,再将所述第一反编译文件以及所述第二反编译文件进行比对处理,以得到针对所述目标应用包的差异类集合,具体可参见本申请实施例涉及的其他方法步骤。
S203:以所述第一反编译文件所包含的至少一个基准文件为参考,在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件,基于所述第一文件确定针对所述目标应用包的增量类集合。
在一个或多个实施例中,第一反编译文件可以是基准应用包对应的smail文件树,smail 文件树可以理解为将基准应用包apk反编译后生成的smali目录下的smali文件的文件集合,其中,基准文件可理解为第一反编译文件(如反编译文件树)中的smali文件。进一步的,以操作***为安卓***为例,Smali可理解Android虚拟机的反汇编语言,smali文件树是由 smali文件组成的树形目录结构,通常视作为smali文件组成的文件集合。
在一种具体的实施场景中,电子设备以所述第一反编译文件所包含的至少一个基准文件为参考,对第二反编译文件进行文件遍历,以在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件,基于所述第一文件对应的类来确定针对所述目标应用包的增量类集合。可以理解的,若第一文件的数量为n(n为自然数),则增量类集合中的第一文件的类的数量为n。所述第一文件可以理解为相对于第一反编译文件所对应的增量文件,例如增量smali 文件。
简而言之,通过遍历待分析的目标应用文件所对应的smali文件树,对于smali文件树中的每个smali文件,该第一smali文件所对应的类在基准apk中不存在,这样第一smali文件的类属于新增的类,因此将该第一smali文件的文件名添加到增量集合中。
在一种可行的实施方式中,设置增量类集合IncrementalList,以第一反编译文件为smali 文件树T1、以第二反编译文件为smali文件树T2进行释义,如下:
第二反编译文件为smali文件树T2中包含N(N为正整数)个目标文件,电子设备以所述第一反编译文件也即“smali文件树T1”所包含至少一个基准文件为参考,如下:
1、获取“目标文件1”,对第一反编译文件也即“smali文件树T1”进行文件遍历,将当前的“目标文件1”与“smali文件树T1”中的每个“基准文件”分别进行匹配,检测是否“目标文件1”是否与每个所述基准文件不匹配,若不匹配,则确定“目标文件1”为第一文件;将作为第一文件的“目标文件1”对应的类加入至增量类集合IncrementalList;
2、获取“目标文件2”,对第一反编译文件也即“smali文件树T1”进行文件遍历,将当前的“目标文件2”与“smali文件树T1”中的每个“基准文件”分别进行匹配,检测是否“目标文件2”是否与每个所述基准文件不匹配,若不匹配,则确定“目标文件2”为第一文件;将作为第一文件的“目标文件2”对应的类加入至增量类集合IncrementalList;
....
i、如图3所示,图3是本申请涉及的一种文件匹配的场景示意图,如图3,电子设备可以获取“目标文件i”(i为大于0的整数),对第一反编译文件也即“smali文件树T1”进行文件遍历,将当前的“目标文件i”与“smali文件树T1”中的每个“基准文件”分别进行匹配,检测是否“目标文件i”是否与每个所述基准文件不匹配,若不匹配,则确定“目标文件i”为第一文件;将作为第一文件的“目标文件i”对应的类加入至增量类集合IncrementalList;
以此类推,直至i等于N完成匹配之后结束,得到增量类集合IncrementalList。
可以理解的,第一smali文件以“包名+类名”命名并以“.smali”结尾,这样通过获取第一smali文件的文件名称,将文件名称中对应的后缀名“.smali”进行去除处理,然后将去除“.smali”之后的文件名称(也即作为增量类)添加至增量类集合中以完成“将第一文件对应的类加入至增量类集合中”。进一步的,所述增量类集合中的至少一个增量类(如新增函数类)可以是相当于“第一反编译文件所包含的基准文件”所新增的新增函数类(可理解为该增量函数类不存在与第一反编译文件中);在一些实施例中,所述增量类集合中的至少一个增量类(如增量函数类)可以是相当于“第一反编译文件所包含的基准文件”所修改的增量函数类(可理解为该增量函数类是在第一反编译文件中某一基准文件的基础上修改之后生成的修改函数类)。
可选的,上述“在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件”的过程:可以是通过检测基准文件与‘第二反编译文件所包含的至少一个目标文件’是否一致,也即比对基准文件与目标文件两者间的数据,若某一基准文件与所有的目标文件都不一致,该“某一基准文件”通常为新增的smail文件,将该“某一基准文件”作为第一文件,此时第一文件对应的类通常属于新增的新增函数类。
可选的,上述“在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件”的过程:可以是通过比对文件名称,也即“在所述第二反编译文件中确定与每个所述基准文件的基准文件名称不匹配的第一文件名称,基于所述第一文件名称确定针对所述目标应用包的增量类集合”,可以理解的,若第二反编译文件中的某一目标文件的名称与所有的基准文件名称均不匹配,则将该“某一目标文件”作为第一文件,第一文件名称也即“某一目标文件”的名称。
在一个或多个实施例中,在每确定第一文件之后可以随之将第一文件从所属的第二反编译文件中进行忽略标记,忽略标记用于指示在下一轮文件匹配过程(将当前的“目标文件i”与“smali文件树T1”中的每个“基准文件”分别进行匹配”的步骤)对该忽略标记的第一文件进行跳过,可不必对此时的第一文件进行匹配,避免每一轮均对已经确定第一文件再判断以节省匹配计算资源,提高应用检测效率。
在一些实施方式中可以在每确定第一文件之后将第一文件从第二反编译文件中进行删除处理,以避免在下一轮“将当前的“基准文件i”与“smali文件树T2”中的每个“目标文件”分别进行匹配”的步骤时,可不必对此时的第一文件进行匹配,避免每一轮均对已经确定第一文件再判断以节省匹配计算资源,提高应用检测效率。
在一种可行的实施方式中,电子设备还可以:以所述第一反编译文件所包含的至少一个基准文件的基准文件名称为参考,在所述第二反编译文件中确定与至少一个所述基准文件名称相匹配的第四文件名称,此时可理解为,第四文件名称与基准文件名称相匹配,第四文件与基准文件可能是相同的,也有可能是在基准文件上进行代码修改或代码调整得到的第四文件;基于此,可进一步比对第四文件与基准文件的文件数据是否一致,可以分别对第四文件和基准文件进行摘要计算,得到第四文件和基准文件分别对应的摘要值,通过比对第四文件和基准文件分别对应的摘要值是否一致来确定“第四文件与基准文件的文件数据是否一致”;
可以理解的,可以采用摘要算法计算文件(如第四文件、基准文件)的摘要值,所述摘要算法包括但不限于MD(消息摘要)算法、SHA(安全散列)算法、MAC(消息认证码)算法等等,具体可基于实际应用情况进行设置,此处不作具体限定。
例如可以通过MD(消息摘要)算法中的MD5算法计算第四文件与基准文件分别对应的摘要值,当两者摘要值一致时,此时第四文件与基准文件是相同的;当两者摘要值不同时,此时为在基准文件上进行代码修改或代码调整得到的第四文件,此种情况下,电子设备基于所述第四文件名称确定针对所述目标应用包的修改类,将该修改类加入至增量类集合中。具体可以参照第一文件对应的增量类的确定方式,两者类似。
S204:以所述第二反编译文件所包含的至少一个目标文件为参考,在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件以及与至少一个所述目标文件相匹配的第三文件,基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合和增量类集合。
在一个或多个实施例中,第二反编译文件可以是基准应用包对应的smail文件树,smail 文件树可以理解为将基准应用包apk反编译后生成的smali目录下的smali文件的文件集合,其中,目标文件可理解为第二反编译文件(如反编译文件树)中的smali文件。进一步的,以操作***为安卓***为例,Smali可理解Android虚拟机的反汇编语言,smali文件树是由 smali文件组成的树形目录结构,通常视作为smali文件组成的文件集合。
在一种具体的实施场景中,电子设备以所述第二反编译文件所包含的至少一个目标文件为参考,对第一反编译文件进行文件遍历,以在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件以及与至少一个所述目标文件相匹配的第三文件,基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合和增量类集合。
简而言之,通过遍历基准应用文件所对应的smali文件树,来确定第二文件以及第三文件,由于第二文件与第二反编译文件中每个所述目标文件均不匹配的,则通常第二文件对应的函数类是删减了的,在一种可行的实施方式中,电子设备可以将所述第二文件的第二文件名称加入至针对所述目标应用包的删减类集合;
可选的,上述“在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件”的过程:可以是通过检测目标文件与‘第一反编译文件所包含的每个基准文件’是否一致,也即比对每个基准文件与目标文件两者间的数据,若某一基准文件与所有的目标文件都不一致,该“某一基准文件”通常为删除了的smail文件,将该“某一基准文件”作为第二文件,此时第二文件对应的类通常属于删减的删减函数类。
可选的,上述“在所述第一反编译文件中确定与每个所述目标文件的目标文件名称不匹配的第二文件名称”的过程:可以是通过比对文件名称,也即“在所述第一反编译文件中确定与每个所述目标文件的目标文件名称不匹配的第二文件名称,基于所述第二文件名称确定针对所述目标应用包的删减类集合”。
进一步的,电子设备在所述第一反编译文件中确定与至少一个所述目标文件相匹配的第三文件,可以是通过比对文件名称,也即存在基准文件与目标文件的名称相同,与基准文件名称相同的目标文件(与基准文件相同名称的目标文件可作为第三文件,两者smail文件对应的类是相同的)可视作为第三文件;文件名称相匹配,相同名称的目标文件与基准文件可能是相同的文件数据,也有可能是在基准文件上进行代码修改或代码调整得到的第三文件;基于此,可进一步比对第三文件与基准文件的文件数据是否一致,例如可以计算第三文件与基准文件的摘要值,当两者摘要值一致时,此时第三文件与基准文件是相同的;当两者摘要值不同时,此时为在基准文件上进行代码修改或代码调整得到的第三文件,此种情况下,电子设备基于所述第三文件名称确定针对所述目标应用包的修改类,将该修改类加入至增量类集合中。
可以理解的,第二smali文件以“包名+类名”命名并以“.smali”结尾,这样通过获取第二smali文件的文件名称,将文件名称中对应的后缀名“.smali”进行去除处理,然后将去除“.smali”之后的文件名称(也即作为增量类)添加至删减类集合中以完成“将第二文件对应的类加入至删减类集合中”。
可以理解的,第三smali文件以“包名+类名”命名并以“.smali”结尾,这样通过获取第三smali文件的文件名称,将文件名称中对应的后缀名“.smali”进行去除处理,然后将去除“.smali”之后的文件名称(也即作为增量类)添加至删减类集合中以完成“将第三文件对应的类加入至增量类集合中”。
在一种可行的实施方式中,设置增量类集合IncrementalList,设置删减类集ReducedList;
以第一反编译文件为smali文件树T1、以第二反编译文件为smali文件树T2进行释义,如下:
电子设备以所述第二反编译文件也即“smali文件树T2”所包含的N个(N为正整数)目标文件为参考:
1、获取“基准文件1”,对第二反编译文件也即“smali文件树T2”进行文件遍历,将当前的“基准文件1”与“smali文件树T2”中的每个“目标文件”分别进行匹配,一方面:检测“基准文件1”是否与每个目标文件不匹配,若不匹配,则确定“基准文件1”为第二文件;将作为第二文件的“基准文件1”对应的类加入至删减类集合ReducedList,其中,文件匹配可以通过比对各文件的文件名称;另一方面:检测是否“基准文件1”是否与至少一个目标文件匹配,若匹配,确定“基准文件1”为第三文件;再将第三文件和“与第三文件的文件名称相同的参考目标文件”进行文件数据匹配,在两者文件数据不相同的情况下,说明“与第三文件的文件名称相同的参考目标文件”是对“第三文件”进行代码修改或代码调整生成的第三文件,此时将第三文件对应的类加入至增量类集合IncrementalList中。
2、获取“基准文件2”,对第二反编译文件也即“smali文件树T2”进行文件遍历,将当前的“基准文件2”与“smali文件树T2”中的每个“目标文件”分别进行匹配,一方面:检测“基准文件2”是否与每个目标文件不匹配,若不匹配,则确定“基准文件2”为第二文件;将作为第二文件的“基准文件2”对应的类加入至删减类集合ReducedList,其中,文件匹配可以通过比对各文件的文件名称;另一方面:检测是否“基准文件2”是否与至少一个目标文件匹配,若匹配,确定“基准文件2”为第三文件;再将第三文件和“与第三文件的文件名称相同的参考目标文件”进行文件数据匹配,在两者文件数据不相同的情况下,说明“与第三文件的文件名称相同的参考目标文件”是对“第三文件”进行代码修改或代码调整生成的第三文件,此时将第三文件对应的类加入至增量类集合IncrementalList中。
....
i、如图4所示,图4是本申请涉及的另一种文件匹配的场景示意图,如图3,电子设备可以获取“基准文件i”,对第二反编译文件也即“smali文件树T2”进行文件遍历,将当前的“基准文件i”与“smali文件树T2”中的每个“目标文件”分别进行匹配,一方面:检测“基准文件i”是否与每个目标文件不匹配,若不匹配,则确定“基准文件i”为第二文件;将作为第二文件的“基准文件i”对应的类加入至删减类集合ReducedList,其中,文件匹配可以通过比对各文件的文件名称;另一方面:检测是否“基准文件i”是否与至少一个目标文件匹配,若匹配,确定“基准文件i”为第三文件;再将第三文件和“与第三文件的文件名称相同的参考目标文件”进行文件数据匹配,在两者文件数据不相同的情况下,说明“与第三文件的文件名称相同的参考目标文件”是对“第三文件”进行代码修改或代码调整生成的第三文件,此时将第三文件对应的类加入至增量类集合IncrementalList中。
以此类推,直至i等于N,得到增量类集合IncrementalList和删减类集合ReducedList。
可以理解的:上述过程通过遍历基准smali文件树T1,读取每个smali文件的文件名N1,若smali文件树T2中不存在与N1相同的smali文件,此时确定第二文件,第二文件的文件名称为N1,则将N1的后缀“.smali”剔除后添加到删减类集合ReducedList;若smali文件树 T2中存在文件名称N2与文件名称N1相同,则计算N1文件的MD5值(记为MD5_1)与N2 文件的MD5值(记为MD5_2),若MD5_1与MD5_2相同,则将N2从T2中删除或进行忽略标记,以节省后续匹配时的计算处理资源,提高检测效率;若MD5_1与MD5_2不相同,则将N1的后缀剔除后添加到增量类集合IncrementalList中,并从T2中删除N2,以节省后续匹配时的计算处理资源,提高检测效率;
在一种可行的实施方式中,进一步比对第三文件与基准文件的文件数据是否一致,电子设备可以执行“获取所述第三文件与所述基准文件的摘要匹配结果,基于所述摘要匹配结果将所述第三文件的第三文件名称加入至所述增量类集合”的步骤。
其中,摘要匹配结果可以理解为采用摘要算法(如MD5算法)对两个文件(如第三文件、基准文件)分别计算摘要值,对两个文件的摘要值进行匹配得到的匹配结果,该匹配结果也称之为摘要匹配结果。例如可以将两个文件的摘要值进行比对(比对两个文件的摘要值是否一致)得到比对结果以作为摘要匹配结果,摘要匹配结果包含摘要匹配类型和摘要不匹配类型;摘要匹配类型的摘要结果可以理解为两个文件(如第三文件、基准文件)的摘要值相匹配,例如两个文件的摘要值一致;摘要不匹配类型的摘要结果可以理解为两个文件(如第三文件、基准文件)的摘要值不匹配,例如两个文件的摘要值不一致;
可以理解的:例如可以采用MD5算法计算第三文件与基准文件的摘要值,将第三文件与基准文件的摘要值进行匹配,当摘要匹配结果指示两者摘要值一致时通常摘要匹配结果为摘要匹配类型时,可以理解为第三文件与基准文件是相同的;当摘要匹配结果指示两者摘要值不同时通常摘要匹配结果为摘要不匹配类型时,可以理解为通常是在基准文件上进行代码修改或代码调整得到的第三文件,此种情况下,电子设备基于所述第三文件名称确定针对所述目标应用包的修改类,将该修改类加入至增量类集合中。
进一步的,若所述摘要匹配结果的结果类型为摘要不匹配类型,则将所述第三文件的第三文件名称(第三文件名称可表征第三文件对应的类)加入至所述增量类集合。
在一个或多个实施例中,在目标应用文件涉及的应用开发过程中,若对历史版本发布过的应用安装包中的文件进行修改,文件修改前后文件对应的函数类不发生改变。但是由于实质函数类所封装的数据发生改变,电子设备可以将第二文件对应的类作为一种增量函数类加入至增量类集合中。
可以理解的,“获取所述第三文件与所述基准文件的摘要匹配结果”涉及过程可以是:通过相关摘要算法对“第三文件与所述基准文件”计算得到两个摘要值,然后比对摘要值,得到摘要匹配结果。其中,相关摘要算法可以是MD5算法、“SHA算法”、“MAC”算法等等。
S205:基于差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
可以理解的,所述差异类集合可以是增量类集合和/或删减类集合。
具体可参见本申请涉及的其他实施例涉及的方法步骤,此处不再赘述。
在本申请实施例中,电子设备获取针对应用的目标应用包以及应用基准包,然后对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,就可以基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合,通过基于应用基准包所确定的差异类集合可以避免对目标应用包的全量检测分析,电子设备可以仅需基于差异类集合对目标应用包指示的差异代码进行静态污点检测即可,降低了应用检测处理量避免冗余重复,可大幅提高应用检测的效率;以及,基于反编译文件可确定增量类集和删减类集,并以此为依据筛选出进行静态污点分析的增量代码成分,提升了应用检测的智能性。
请参见图5,图5是本申请提出的一种应用检测方法的另一种实施例的流程示意图。具体的:
S301:获取针对应用的目标应用包以及应用基准包;
具体可参考本申请涉及的其他实施例的方法步骤,此处不再赘述。
S302:对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
S303:确定所述差异类集合对应的集合类。
根据一个或多个实施例中,所述集合类基于实际应用情况可以是删减类、可以是增量类、可以是删减类和增量类。
可以理解的,电子设备可以基于所述集合类对所述目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合
S304:若所述集合类为增量类,则调用污点检测工具基于增量类集合对所述目标应用包进行静态污点检测,得到第一污点路径集合,将所述第一污点路径集合作为针对所述目标应用包的污点路径集合;
可以理解的,电子设备通过对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,差异类集合一定程度上反馈目标应用包与应用基准包的代码差异,为了提高应用检测效率,本申请在对目标应包进行静态污点检测时,不采用知己对目标应用包所对应的全部代码进行检测的形式,而是确定目标应用包相对于基准应用包的差异类集合,由于基准应用包电子设备已经预先完成静态污点检测得到了污点路径集合,这样可仅基于差异类集合对目标应用包进行静态污点检测,在一些实施例中可以理解为静态污点检测可基于差异类集合对目标应用包指示的差异代码进行静态污点检测即可,这样可大幅节省针对目标应用包进行应用检测的效率。
可以理解的,所述增量类集合用于辅助电子设备确定目标应用包相当于应用基准包的增量代码,进而对增量代码进行污点检测,以减少对整个目标应用包进行污点检测时的计算处理量、提高检测效率。
在一种可行的实施方式中,
1、电子设备可以基于所述增量类集合来确定针对所述目标应用包的检测入口函数集合;
1.1获取所述目标应用包的过程间调用图,基于所述过程间调用图确定初始入口函数集合;
可以理解的:电子设备可以调用污点检测工具,例如调用开源的代码分析框架soot工具中生成控制流图的方法,调用污点检测工具将目标应用包的二进制代码解析为中间代码并生成CFG。调用污点检测工具中生成过程间调用方法,例如FlowDroid框架中的生成双向ICFG 的方法,分析目标应用包的函数调用关系并生成过程间调用图ICFG,记录ICFG中的***组件生命周期函数及回调函数到集合E中,该集合E也即初始入口函数集合。
在一种具体的实施场景中,电子设备在生成过程间调用图之前(也即开始分析直接),通过设置污染源函数source和陷入函数sink,具体实施中:通常将暴露在外部的函数设置为 source函数,将程序内部执行关键逻辑的函数设置为sink函数,如果经过分析能得到从污染源函数source到陷入函数sink的有可达路径,则表示存在一条潜在的安全漏洞,此时可得到一条污点路径;
可以理解的,在对目标应用包进行分析时,通过目标应用包指示的绝对路径查找被分析对象所在位置,并通过java开源分析框架soot实现对于字节码程序的逆向拆解,即使用开源分析框架soot生成语法简洁的中间语言的表示形式,使目标应用包的所有源程序的字节码变量对应到中间语言表示的新数据结构中,从而完整的表达程序的控制流信息和数据传递信息。
进一步的,电子设备调用污点检测工具将目标应用包的二进制代码解析为中间代码,从而以中间代码对应的中间语言表示形式进行转化得到函数内控制流图(CFG),转化过程是将目标应用包的二进制代码指示每条语句对应成一个控制流图节点Bi,并根据执行顺序在每条语句上保存其前驱节点Bp和后继节点Bs;进一步的来生成调用图CG:由于绝大部分应用(目标应用包对应的应用)的执行会涉及函数调用,当函数之间存在调用关系时,电子设备可以进行函数调用关系的模拟,电子设备通常可以解析代码中的函数调用语句,将调用函数和被调用的函数进行映射,并将映射关系用“HashMap的数据结构”保存在调用语句节点中,从而就生成相应的调用图CG;
进一步的,电子设备可以将调用图CG和函数内控制流图CFG复合生成一个新的图类,该图类称为过程间控制流图ICFG,该图类用于描述整个被分析程序的;然后记录过程间控制流图ICFG中的***组件生命周期函数及回调函数,将***组件生命周期函数及回调函数加入至一个参考集合(如设置一个空集合E,加入至集合E中),完成上述过程中之后,得到的该参考集合也即初始入口函数集合。
在一些应用场景中,该初始入口函数集合作为过程间控制流图ICFG的总入口点,后续静态污点检测相当于是对目标应用包对应的所有代码进行静态污点分析,为了提升检测效率,电子设备可以基于所述增量类集合和所述初始入口函数集合对所述过程间调用图进行函数节点遍历处理,以确定至少一个目标节点函数,从而生成包含所述至少一个目标节点函数的检测入口函数集合。最终得到检测入口函数集合相当于用于指示电子设备仅调用污点检测工具对增量代码进行污点检测。
1.2、电子设备基于所述增量类集合和所述初始入口函数集合对所述过程间调用图进行函数节点遍历处理,以确定至少一个目标节点函数;
具体实施中:电子设备以所述初始入口函数集合指示的至少一个初始入口函数为基准,基于增量类集合对所述过程间控制流图中各初始函数节点对应的每个下一函数节点进行节点类匹配处理,得到至少一个目标函数节点对应的目标节点函数;
其中,所述初始函数节点为所述初始入口函数在所述过程间控制流图中对应的首节点,所述目标函数节点对应的目标入口函数所属的目标函数类为所述增量类集合中的函数类。
可以理解的,假设初始入口函数集合为集合E,相当于电子设备从集合E的各初始入口函数Entry依次出发遍历“过程间调用图ICFG”,对于每次读取到的“初始入口函数Entry”下一个节点函数(如:NextMethod函数),判断下一个节点函数的类(NextMethod函数的类)是否位增量类集合中,若是,则将该“下一个节点函数”作为目标结点函数添加到增量函数集合中,(例如,预先定义一个增量函数集合IncreEntrance,当“下一个节点函数”对应的类属于增量类集合,则将其“下一个节点函数”作为目标结点函数添加到IncreEntrance中),当完成整个过程间调用图ICFG的遍历之后,即可得到包含至少一个目标节点函数的检测入口函数集合。
如图6所示,图6是本申请涉及的一种检测入口函数集合确定的场景示意图,假设初始入口函数集合为集合E,电子设备依次遍历集合E中的(初始)入口函数Entry,在每一轮遍历入口函数Entry之前,判断是否遍历完集合E中的每个(初始)入口函数Entry(也即图6中“遍历已结束”对应的步骤),若否,则基于当前的“(初始)入口函数Entry”遍历“过程间调用图ICFG”,对于每次读取到的“初始入口函数Entry”下一个节点函数(如:NextMethod 函数),判断下一个节点函数的类(NextMethod函数的类)是否位于增量类集合中(也即图6中示出的:增量类集合是否存在NextMethod函数的类),若是,则将该“下一个节点函数”作为目标结点函数添加到增量函数集合中,(例如,预先定义一个增量函数集合IncreEntrance,当“下一个节点函数”对应的类属于增量类集合,则将其“下一个节点函数”作为目标结点函数添加到如图6示出的IncreEntrance中),当完成最后一个初始入口函数Entry针对整个过程间调用图ICFG的遍历之后,即可得到包含至少一个目标节点函数的检测入口函数集合IncreEntrance。
可以理解的,
1.3电子设备生成包含所述至少一个目标节点函数的检测入口函数集合。
在一些实施方式中,在得到检测入口函数集合之后,电子设备完成使用污点检测工具进行控制流分析过程。
2、电子设备然后基于所述检测入口函数集合调用污点检测工具对目标应用包进行静态污点检测,得到第一污点路径集合。
可以理解的,电子设备可以调用诸如FlowDroid框架等污点检测工具中的污点分析方法进行数据流分析从而执行静态污点检测过程。
可以理解的,电子设备可以获取所述目标应用包对应的过程间调用图ICFG,然后基于所述检测入口函数集合对所述过程间调用图进行静态污点检测,得到针对所述目标应用包的第一污点路径集合。
可以理解的,电子设备遍历检测入口函数集合(如集合IncreEntrance)中的所有检测入口函数,对于每个检测入口函数NewEntry,提取其在ICFG中的下一个节点,判断该节点是否属于污染源函数source。若是,则调用污点检测工具中的污点分析算法通过对***中敏感数据进行标记,继而跟踪标记数据在程序中的传播路径,基于污点检测工具检测***的保密性和完整性等安全问题,同时将该节点的函数变量设为污点变量,并进行污点分析。若该节点属于污点函数sink,并且使用了污点变量,则该污点变量的传递路径是一条完整的污点路径。并且将该污点路径添加到污点路径集合中,以此类推,遍历完过程间控制流图ICFG后,结束数据流分析以完成静态污点检测之后,就可以得到第一污点路径集合。
可以理解的,第一污点路径集合为电子设备当前通过调用污点检测工具进行污点检测分析,生成的第一污点路径集合。第一污点路径集合反馈的是基于增量类集合所生成的检测入口函数针对性对目标应用包中增量代码成分进行污点检测分析,而得到的增量代码成分中相关的污点路径。可以理解的在一个或多个实施例中,实际调用污点检测工具进行污点检测的检测对象并非整个目标应用包而是目标应用包中的增量代码成分,从而生成第一污点路径集合。
S305:若所述集合类为删减类,则获取所述应用基准包对应的第二污点路径集合,基于所述第二污点路径集合以及删减类集合,确定针对所述目标应用包的所述污点路径集合;
可以理解的,若差异类集合的集合类均属于删减类,则差异类集合即为删减类集合,此时,目标应用包相对于应用基准包而言,通常应用安装包不含增量代码成分。考虑到在目标应用包之前安装包版本的应用基准包已完成污点检测,可以理解为,在应用基准包发布前,电子设备已经完成了对应用基准包的静态污点检测生成了第二污点路径集合,第二污点路径集合可以理解为对应用基准包经静态污点检测处理后所对应的污点路径集合。可以理解的,电子设备可以不用对目标应用包再次调用污点检测工具进行污点检测,而是基于应用基准包对应的第二污点路径集合并结合删减类集合来得到针对目标应用包的污点路径集合。
在一种具体的实施场景中,电子设备可以基于所述第二污点路径集合以及删减类集合,从第二污点路径集合中确定针对所述目标应用包的所述污点路径集合;
可以理解的,删减类集合中包含至少一个删减类,在获取应用基准包对应的第二污点路径集合,可以遍历第二污点路径集合中的每条污点路径,可以理解的污点路径通常可映射诸如污点变量、节点对应的污点函数、污点函数所对应的类,基于此,电子设备可以确定每条污点路径对应的污点函数类,例如基于污点路径记载的污点函数或污点变量的名称来确定污点函数类,电子设备仅需对删减类与每条污点路径对应的污点函数类进行匹配即可,当两者相匹配时,例如两者一致,电子设备可以确定与删减类所匹配的污点函数类指示的参考污点路径,依次类推,完成对删减类集合中所有删减类的匹配,来从所述第二污点路径集合中确定至少一个参考污点路径;也即执行“基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径”步骤;电子设备在确定至少一个参考污点路径之后,通常这些参考污点路径在目标应用包中不会存在,基于此,电子设备仅将所述第二污点路径集合中的所述至少一个参考污点路径进行删除处理,就可以得到针对所述目标应用包的污点路径集合。
S306:若所述集合类为增量类和删减类,则基于所述第一污点路径集合、所述第二污点路径集合以及所述删减类集合,确定针对所述目标应用包的所述污点路径集合。
可以理解的,若所述集合类为增量类和删减类,也就是说,差异类集合包括增量类集合和删减类集合,所述增量类集合用于辅助电子设备确定目标应用包相当于应用基准包的增量代码,进而对增量代码进行污点检测,以减少对整个目标应用包进行污点检测时的计算处理量、提高检测效率。电子设备可以通过对第一污点路径集合和第二污点路径集合进行污点路径拟合,去除删减类集合在第二污点路径集合中的相关污点路径,可得到针对目标应用包的污点路径集合。从而起到提高检测效率,节省污点检测工作量的效果。
在一种具体的实施场景中,电子设备可以执行“基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径”步骤(具体可参考S305),然后获取所述第二污点路径集合中的至少一个目标污点路径,所处目标污点路径为所述第二污点路径集合中除所述参考污点路径之外的污点路径,可以理解为从第二污点路径集合中获取到除参考污点路径之外的目标污点路径,然后将所述至少一个目标污点路径加入至所述第一污点路径集合中,就可以得到针对所述目标应用包的污点路径集合。第一污点路径集合的获取方式可参考其他方法步骤,此处不再赘述。
在本申请实施例中,电子设备获取针对应用的目标应用包以及应用基准包,然后对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,就可以基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合,通过基于应用基准包所确定的差异类集合可以避免对目标应用包的全量检测分析,电子设备可以仅需基于差异类集合对目标应用包指示的差异代码进行静态污点检测即可,降低了应用检测处理量避免冗余重复,可大幅提高应用检测的效率;以及,基于反编译文件可确定增量类集和删减类集,并以此为依据筛选出进行静态污点分析的增量代码成分,提升了应用检测的智能性;以及,基于不同差异类集合的类型可实现采用不同方式来进行污点检测,提升了历史生成的应用基准包对应污点分析结果的利用效率,优化了静态污点检测的流程。
请参见图7,为本申请实施例提供的一种应用检测***的架构示意图。如图4所示,所述应用检测***100包括电子设备20和目标设备集群,所述标设备集群可以包括多个目标设备,如图7所示,具体包括目标设备1、目标设备2、…、目标设备n,n为大于0的整数;本实施例以图7中的电子设备20及目标设备1为例进行描述。
所述电子设备20具有应用检测功能,在电子设备20为服务器是,电子设备20可以是单独的服务器设备,例如:机架式、刀片、塔式、或者机柜式的服务器设备,或采用工作站、大型计算机等具备较强计算能力硬件设备;也可以是采用多个服务器组成的服务器集群,所述服务集群中的各服务器可以是以对称方式组成的,其中每台服务器在业务链路中功能等价、地位等价,各服务器均可单独对外提供服务,所述单独提供服务可以理解为无需另外的服务器的辅助。
目标设备集群中各目标设备可以是具有通信功能的设备,目标设备可以是用于开发诸如目标应用包、应用基准包等应用安装包的设备,该目标设备包括但不限于:手持设备、个人电脑、平板电脑、车载设备、智能手机、计算设备或连接到无线调制解调器的其它处理设备等。
所述目标设备1通过网络与电子设备20进行通信,网络可以是无线网络,也可以是有线网络,无线网络包括但不限于蜂窝网络、无线局域网、红外网络或蓝牙网络,有线网络包括但不限于以太网、通用串行总线(universal serial bus,USB)或控制器局域网络。
目标设备1至少可以基于与电子设备之间的通信网络上传待检测应用的目标应用包。可以理解的,电子设备20获取到针对应用的目标应用包,电子设备可以获取针对应用的应用基准包;
电子设备20对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
电子设备20基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
另外,上述实施例提供的文件提测***实施例与一些实施例中的所述文件提测方法属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
下面将结合图8,对本申请实施例提供的应用检测装置进行详细介绍。需要说明的是,图8所示的应用检测装置,用于执行本申请图1~图7所示实施例的方法,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请图1~图7所示的实施例。
请参见图8,其示出本申请实施例的应用检测装置的结构示意图。该应用检测装置1可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。根据一些实施例,该应用检测装置1包括获取模块11、处理模块12和检测模块13,具体用于:
获取模块11,用于获取应用的目标应用包以及应用基准包;
处理模块12,用于对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
检测模块13,用于基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合
可选的,如图9所示,所述处理模块12包括:
文件确定单元121,用于确定所述应用基准包对应的第一反编译文件,确定所述目标应用包对应的第二反编译文件;
集合确定单元122,用于将所述第一反编译文件以及所述第二反编译文件进行比对处理,得到针对所述目标应用包的差异类集合。
可选的,所述集合确定单元122,具体用于:
以所述第一反编译文件所包含的至少一个基准文件为参考,在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件,基于所述第一文件确定针对所述目标应用包的增量类集合;和/或
以所述第二反编译文件所包含的至少一个目标文件为参考,在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件以及与至少一个所述目标文件相匹配的第三文件,基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合和增量类集合。
可选的,所述集合确定单元122,具体用于:
在所述第二反编译文件中确定与每个所述基准文件的基准文件名称不匹配的第一文件名称,基于所述第一文件名称确定针对所述目标应用包的增量类集合;
可选的,所述集合确定单元122,具体用于:
在所述第一反编译文件中确定与每个所述目标文件的目标文件名称不匹配的第二文件名称以及与至少一个所述目标文件名称相匹配的第三文件名称,基于所述第二文件名称以及所述第三文件名称确定针对所述目标应用包的删减类集合和增量类集合。
可选的,所述集合确定单元122,具体用于:
将所述第二文件的第二文件名称加入至针对所述目标应用包的删减类集合;以及,
获取所述第三文件与参考目标文件的摘要匹配结果,基于所述摘要匹配结果将所述第三文件的第三文件名称加入至所述增量类集合,所述第三文件的文件名称与所述参考目标文件的文件名称相同。
可选的,所述集合确定单元122,具体用于:
若所述摘要匹配结果的结果类型为摘要不匹配类型,则将所述第三文件的第三文件名称加入至所述增量类集合。
可选的,所述检测模块13,具体用于:
确定所述差异类集合对应的集合类,基于所述集合类对所述目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
可选的,所述检测模块13,具体用于:
若所述集合类为增量类,则调用污点检测工具基于增量类集合对所述目标应用包进行静态污点检测,得到第一污点路径集合,将所述第一污点路径集合作为针对所述目标应用包的污点路径集合;
若所述集合类为删减类,则获取所述应用基准包对应的第二污点路径集合,基于所述第二污点路径集合以及删减类集合,确定针对所述目标应用包的所述污点路径集合;
若所述集合类为增量类和删减类,则基于所述第一污点路径集合、所述第二污点路径集合以及所述删减类集合,确定针对所述目标应用包的所述污点路径集合。
可选的,所述检测模块13,具体用于:
基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径;
获取所述第二污点路径集合中的至少一个目标污点路径,所处目标污点路径为所述第二污点路径集合中除所述参考污点路径之外的污点路径;
将所述至少一个目标污点路径加入至所述第一污点路径集合中,得到针对所述目标应用包的污点路径集合。
可选的,所述检测模块13,具体用于:
基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径;
将所述第二污点路径集合中的所述至少一个参考污点路径进行删除处理,得到针对所述目标应用包的污点路径集合。
可选的,所述检测模块13,具体用于:
基于所述增量类集合确定针对所述目标应用包的检测入口函数集合;
基于所述检测入口函数集合调用污点检测工具对目标应用包进行静态污点检测,得到第一污点路径集合。
可选的,所述检测模块13,具体用于:
获取所述目标应用包的过程间调用图,基于所述过程间调用图确定初始入口函数集合;
基于所述增量类集合和所述初始入口函数集合对所述过程间调用图进行函数节点遍历处理,以确定至少一个目标节点函数;
生成包含所述至少一个目标节点函数的检测入口函数集合。
可选的,所述检测模块13,具体用于:
以所述初始入口函数集合指示的至少一个初始入口函数为基准,基于增量类集合对所述过程间控制流图中各初始函数节点对应的每个下一函数节点进行节点类匹配处理,得到至少一个目标函数节点对应的目标节点函数;
其中,所述初始函数节点为所述初始入口函数在所述过程间控制流图中对应的首节点,所述目标函数节点对应的目标入口函数所属的目标函数类为所述增量类集合中的函数类。
可选的,所述检测模块13,具体用于:
获取所述目标应用包对应的过程间调用图;
基于所述检测入口函数集合对所述过程间调用图进行静态污点检测,得到针对所述目标应用包的第一污点路径集合。
需要说明的是,上述实施例提供的应用检测装置在执行应用检测方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用检测装置与应用检测方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1~图6所示实施例的所述应用检测方法,具体执行过程可以参见图1~图6所示实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1~图6所示实施例的所述应用检测方法,具体执行过程可以参见图1~图6所示实施例的具体说明,在此不进行赘述。
请参考图10,其示出了本申请一个示例性实施例提供的电子设备的结构方框图。本申请中的电子设备可以包括一个或多个如下部件:处理器110、存储器120、输入装置130、输出装置140和总线150。处理器110、存储器120、输入装置130和输出装置140之间可以通过总线150连接。
处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digital signal processing,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑阵列(programmable logicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)和调制解调器等中的一种或几种的组合。其中, CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(random Access Memory,RAM),也可以包括只读存储器(read-only memory,ROM)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等,该操作***可以是安卓(Android)***,包括基于Android***深度开发的***、苹果公司开发的IOS***,包括基于IOS***深度开发的***或其它***。存储数据区还可以存储电子设备在使用中所创建的数据比如电话本、音视频数据、聊天记录数据,等。
参见图11所示,存储器120可分为操作***空间和用户空间,操作***即运行于操作***空间,原生及第三方应用程序即运行于用户空间。为了保证不同第三方应用程序均能够达到较好的运行效果,操作***针对不同第三方应用程序为其分配相应的***资源。然而,同一第三方应用程序中不同应用场景对***资源的需求也存在差异,比如,在本地资源加载场景下,第三方应用程序对磁盘读取速度的要求较高;在动画渲染场景下,第三方应用程序则对GPU性能的要求较高。而操作***与第三方应用程序之间相互独立,操作***往往不能及时感知第三方应用程序当前的应用场景,导致操作***无法根据第三方应用程序的具体应用场景进行针对性的***资源适配。
为了使操作***能够区分第三方应用程序的具体应用场景,需要打通第三方应用程序与操作***之间的数据通信,使得操作***能够随时获取第三方应用程序当前的场景信息,进而基于当前场景进行针对性的***资源适配。
以操作***为Android***为例,存储器120中存储的程序和数据如图12所示,存储器120中可存储有Linux内核层320、***运行时库层340、应用框架层360和应用层380,其中,Linux内核层320、***运行库层340和应用框架层360属于操作***空间,应用层380 属于用户空间。Linux内核层320为电子设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、摄像头驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。***运行库层340通过一些C/C++ 库来为Android***提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL/ES 库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。在***运行时库层340中还提供有安卓运行时库(Android runtime),它主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。应用框架层360提供了构建应用程序时可能用到的各种API,开发者也可以通过使用这些API来构建自己的应用程序,比如活动管理、窗口管理、视图管理、通知管理、内容提供者、包管理、通话管理、资源管理、定位管理。应用层380中运行有至少一个应用程序,这些应用程序可以是操作***自带的原生应用程序,比如联系人程序、短信程序、时钟程序、相机应用等;也可以是第三方开发者所开发的第三方应用程序,比如游戏类应用程序、即时通信程序、相片美化程序等。
以操作***为IOS***为例,存储器120中存储的程序和数据如图13所示,IOS***包括:核心操作***层420(Core OS layer)、核心服务层440(Core Services layer)、媒体层460(Media layer)、可触摸层480(Cocoa Touch Layer)。核心操作***层420包括了操作***内核、驱动程序以及底层程序框架,这些底层程序框架提供更接近硬件的功能,以供位于核心服务层440的程序框架所使用。核心服务层440提供给应用程序所需要的***服务和/或程序框架,比如基础(Foundation)框架、账户框架、广告框架、数据存储框架、网络连接框架、地理位置框架、运动框架等等。媒体层460为应用程序提供有关视听方面的接口,如图形图像相关的接口、音频技术相关的接口、视频技术相关的接口、音视频传输技术的无线播放(AirPlay)接口等。可触摸层480为应用程序开发提供了各种常用的界面相关的框架,可触摸层480负责用户在电子设备上的触摸交互操作。比如本地通知服务、远程推送服务、广告框架、游戏工具框架、消息用户界面接口(User Interface,UI)框架、用户界面UIKit框架、地图框架等等。
在图13所示出的框架中,与大部分应用程序有关的框架包括但不限于:核心服务层440 中的基础框架和可触摸层480中的UIKit框架。基础框架提供许多基本的对象类和数据类型,为所有应用程序提供最基本的***服务,和UI无关。而UIKit框架提供的类是基础的UI类库,用于创建基于触摸的用户界面,iOS应用程序可以基于UIKit框架来提供UI,所以它提供了应用程序的基础架构,用于构建用户界面,绘图、处理和用户交互事件,响应手势等等。
其中,在IOS***中实现第三方应用程序与操作***数据通信的方式以及原理可参考 Android***,本申请在此不再赘述。
其中,输入装置130用于接收输入的指令或数据,输入装置130包括但不限于键盘、鼠标、摄像头、麦克风或触控设备。输出装置140用于输出指令或数据,输出装置140包括但不限于显示设备和扬声器等。在一个示例中,输入装置130和输出装置140可以合设,输入装置130和输出装置140为触摸显示屏,该触摸显示屏用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。触摸显示屏通常设置在电子设备的前面板。触摸显示屏可被设计成为全面屏、曲面屏或异型屏。触摸显示屏还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本申请实施例对此不加以限定。
除此之外,本领域技术人员可以理解,上述附图所示出的电子设备的结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,电子设备中还包括射频电路、输入单元、传感器、音频电路、无线保真(wireless fidelity,WiFi)模块、电源、蓝牙模块等部件,在此不再赘述。
在本申请实施例中,各步骤的执行主体可以是上文介绍的电子设备。可选地,各步骤的执行主体为电子设备的操作***。操作***可以是安卓***,也可以是IOS***,或者其它操作***,本申请实施例对此不作限定。
本申请实施例的电子设备,其上还可以安装有显示设备,显示设备可以是各种能实现显示功能的设备,例如:阴极射线管显示器(cathode ray tubedisplay,简称CR)、发光二极管显示器(light-emitting diode display,简称LED)、电子墨水屏、液晶显示屏(liquid crystal display,简称LCD)、等离子显示面板(plasma display panel,简称PDP)等。用户可以利用电子设备101上的显示设备,来查看显示的文字、图像、视频等信息。所述电子设备可以是智能手机、平板电脑、游戏设备、AR(Augmented Reality,增强现实)设备、汽车、数据存储装置、音频播放装置、视频播放装置、笔记本、桌面计算设备、可穿戴设备诸如电子手表、电子眼镜、电子头盔、电子手链、电子项链、电子衣物等设备。
在图10所示的电子设备中,其中电子设备可以是一种终端,处理器110可以用于调用存储器120中存储的应用程序,并具体执行以下操作:
获取针对应用的目标应用包以及应用基准包;
对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
在一个实施例中,所述处理器110在执行所述对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合时,具体执行以下操作:
确定所述应用基准包对应的第一反编译文件,确定所述目标应用包对应的第二反编译文件;
将所述第一反编译文件以及所述第二反编译文件进行比对处理,得到针对所述目标应用包的差异类集合。
在一个实施例中,所述处理器110在执行所述将所述第一反编译文件以及所述第二反编译文件进行比对处理时,具体执行以下操作:
以所述第一反编译文件所包含的至少一个基准文件为参考,在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件,基于所述第一文件确定针对所述目标应用包的增量类集合;和/或
以所述第二反编译文件所包含的至少一个目标文件为参考,在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件以及与至少一个所述目标文件相匹配的第三文件,基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合和增量类集合。
在一个实施例中,所述处理器110在执行所述在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件,基于所述第一文件确定针对所述目标应用包的增量类集合时,具体执行以下操作:
在所述第二反编译文件中确定与每个所述基准文件的基准文件名称不匹配的第一文件名称,基于所述第一文件名称确定针对所述目标应用包的增量类集合;
所述在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件以及与至少一个所述目标文件相匹配的第三文件,基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合,包括:
在所述第一反编译文件中确定与每个所述目标文件的目标文件名称不匹配的第二文件名称以及与至少一个所述目标文件名称相匹配的第三文件名称,基于所述第二文件名称以及所述第三文件名称确定针对所述目标应用包的删减类集合和增量类集合。
在一个实施例中,所述处理器110在执行所述基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合和增量类集合时,具体执行以下操作:
将所述第二文件的第二文件名称加入至针对所述目标应用包的删减类集合;以及,
获取所述第三文件与参考目标文件的摘要匹配结果,基于所述摘要匹配结果将所述第三文件的第三文件名称加入至所述增量类集合,所述第三文件的文件名称与所述参考目标文件的文件名称相同。
在一个实施例中,所述处理器110在执行述基于所述摘要匹配结果将所述第三文件的第三文件名称加入至所述删减类集合中时,具体执行以下操作:
若所述摘要匹配结果的结果类型为摘要不匹配类型,则将所述第三文件的第三文件名称加入至所述增量类集合。
在一个实施例中,所述处理器110在执行所述基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合时,具体执行以下操作:
确定所述差异类集合对应的集合类,基于所述集合类对所述目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
在一个实施例中,所述处理器110在执行所述基于所述集合类对所述目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合时,具体执行以下操作:
若所述集合类为增量类,则调用污点检测工具基于增量类集合对所述目标应用包进行静态污点检测,得到第一污点路径集合,将所述第一污点路径集合作为针对所述目标应用包的污点路径集合;
若所述集合类为删减类,则获取所述应用基准包对应的第二污点路径集合,基于所述第二污点路径集合以及删减类集合,确定针对所述目标应用包的所述污点路径集合;
若所述集合类为增量类和删减类,则基于所述第一污点路径集合、所述第二污点路径集合以及所述删减类集合,确定针对所述目标应用包的所述污点路径集合。
在一个实施例中,所述处理器110在执行所述基于所述第一污点路径集合、所述第二污点路径集合以及所述删减类集合,确定针对所述目标应用包的所述污点路径集合时,具体执行以下操作:
基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径;
获取所述第二污点路径集合中的至少一个目标污点路径,所处目标污点路径为所述第二污点路径集合中除所述参考污点路径之外的污点路径;
将所述至少一个目标污点路径加入至所述第一污点路径集合中,得到针对所述目标应用包的污点路径集合。
在一个实施例中,所述处理器110在执行所述基于所述第二污点路径集合以及删减类集合,确定针对所述目标应用包的所述污点路径集合时,具体执行以下操作:
基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径;
将所述第二污点路径集合中的所述至少一个参考污点路径进行删除处理,得到针对所述目标应用包的污点路径集合。
在一个实施例中,所述处理器110在执行所述调用污点检测工具基于增量类集合对所述目标应用包进行静态污点检测,得到第一污点路径集合时,具体执行以下操作:
基于所述增量类集合确定针对所述目标应用包的检测入口函数集合;
基于所述检测入口函数集合调用污点检测工具对目标应用包进行静态污点检测,得到第一污点路径集合。
在一个实施例中,所述处理器1001在执行所述基于所述增量类集合确定针对所述目标应用包的检测入口函数集合时,具体执行以下操作:
获取所述目标应用包的过程间调用图,基于所述过程间调用图确定初始入口函数集合;
基于所述增量类集合和所述初始入口函数集合对所述过程间调用图进行函数节点遍历处理,以确定至少一个目标节点函数;
生成包含所述至少一个目标节点函数的检测入口函数集合。
在一个实施例中,所述处理器110在执行所述基于所述增量类集合和所述初始入口函数集合对所述过程间调用图进行函数节点遍历处理,以确定至少一个目标节点函数时,具体执行以下操作:
以所述初始入口函数集合指示的至少一个初始入口函数为基准,基于增量类集合对所述过程间控制流图中各初始函数节点对应的每个下一函数节点进行节点类匹配处理,得到至少一个目标函数节点对应的目标节点函数;
其中,所述初始函数节点为所述初始入口函数在所述过程间控制流图中对应的首节点,所述目标函数节点对应的目标入口函数所属的目标函数类为所述增量类集合中的函数类。
在一个实施例中,所述处理器1001在执行所述基于所述检测入口函数集合调用污点检测工具对目标应用包进行静态污点检测,得到第一污点路径集合时,具体执行以下操作:
获取所述目标应用包对应的过程间调用图;基于所述检测入口函数集合对所述过程间调用图进行静态污点检测,得到针对所述目标应用包的第一污点路径集合。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (17)
1.一种应用检测方法,其特征在于,所述方法包括:
获取针对应用的目标应用包以及应用基准包;
对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合,包括:
确定所述应用基准包对应的第一反编译文件,确定所述目标应用包对应的第二反编译文件;
将所述第一反编译文件以及所述第二反编译文件进行比对处理,得到针对所述目标应用包的差异类集合。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一反编译文件以及所述第二反编译文件进行比对处理,得到针对所述目标应用包的差异类集合,包括:
以所述第一反编译文件所包含的至少一个基准文件为参考,在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件,基于所述第一文件确定针对所述目标应用包的增量类集合;和/或
以所述第二反编译文件所包含的至少一个目标文件为参考,在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件以及与至少一个所述目标文件相匹配的第三文件,基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合和增量类集合。
4.根据权利要求3所述的方法,其特征在于,所述在所述第二反编译文件中确定与每个所述基准文件不匹配的第一文件,基于所述第一文件确定针对所述目标应用包的增量类集合,包括:
在所述第二反编译文件中确定与每个所述基准文件的基准文件名称不匹配的第一文件名称,基于所述第一文件名称确定针对所述目标应用包的增量类集合;
所述在所述第一反编译文件中确定与每个所述目标文件不匹配的第二文件以及与至少一个所述目标文件相匹配的第三文件,基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合,包括:
在所述第一反编译文件中确定与每个所述目标文件的目标文件名称不匹配的第二文件名称以及与至少一个所述目标文件名称相匹配的第三文件名称,基于所述第二文件名称以及所述第三文件名称确定针对所述目标应用包的删减类集合和增量类集合。
5.根据权利要求3所述的方法,其特征在于,所述基于所述第二文件以及所述第三文件确定针对所述目标应用包的删减类集合和增量类集合,包括:
将所述第二文件的第二文件名称加入至针对所述目标应用包的删减类集合;以及,
获取所述第三文件与参考目标文件的摘要匹配结果,基于所述摘要匹配结果将所述第三文件的第三文件名称加入至所述增量类集合,所述第三文件的文件名称与所述参考目标文件的文件名称相同。
6.根据权利要求5所述的方法,其特征在于,所述基于所述摘要匹配结果将所述第三文件的第三文件名称加入至所述删减类集合中,包括:
若所述摘要匹配结果的结果类型为摘要不匹配类型,则将所述第三文件的第三文件名称加入至所述增量类集合。
7.根据权利要求1所述的方法,其特征在于,所述基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合,包括:
确定所述差异类集合对应的集合类,基于所述集合类对所述目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
8.根据权利要求7所述的方法,其特征在于,所述基于所述集合类对所述目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合,包括:
若所述集合类为增量类,则调用污点检测工具基于增量类集合对所述目标应用包进行静态污点检测,得到第一污点路径集合,将所述第一污点路径集合作为针对所述目标应用包的污点路径集合;
若所述集合类为删减类,则获取所述应用基准包对应的第二污点路径集合,基于所述第二污点路径集合以及删减类集合,确定针对所述目标应用包的所述污点路径集合;
若所述集合类为增量类和删减类,则基于所述第一污点路径集合、所述第二污点路径集合以及所述删减类集合,确定针对所述目标应用包的所述污点路径集合。
9.根据权利要求8所述的方法,其特征在于,所述基于所述第一污点路径集合、所述第二污点路径集合以及所述删减类集合,确定针对所述目标应用包的所述污点路径集合,包括:
基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径;
获取所述第二污点路径集合中的至少一个目标污点路径,所处目标污点路径为所述第二污点路径集合中除所述参考污点路径之外的污点路径;
将所述至少一个目标污点路径加入至所述第一污点路径集合中,得到针对所述目标应用包的污点路径集合。
10.根据权利要求8所述的方法,其特征在于,所述基于所述第二污点路径集合以及删减类集合,确定针对所述目标应用包的所述污点路径集合,包括:
基于所述删减类集合从所述第二污点路径集合中确定至少一个参考污点路径;
将所述第二污点路径集合中的所述至少一个参考污点路径进行删除处理,得到针对所述目标应用包的污点路径集合。
11.根据权利要求8所述的方法,其特征在于,所述调用污点检测工具基于增量类集合对所述目标应用包进行静态污点检测,得到第一污点路径集合,包括:
基于所述增量类集合确定针对所述目标应用包的检测入口函数集合;
基于所述检测入口函数集合调用污点检测工具对目标应用包进行静态污点检测,得到第一污点路径集合。
12.根据权利要求11所述的方法,其特征在于,所述基于所述增量类集合确定针对所述目标应用包的检测入口函数集合,包括:
获取所述目标应用包的过程间调用图,基于所述过程间调用图确定初始入口函数集合;
基于所述增量类集合和所述初始入口函数集合对所述过程间调用图进行函数节点遍历处理,以确定至少一个目标节点函数;
生成包含所述至少一个目标节点函数的检测入口函数集合。
13.根据权利要求12所述的方法,其特征在于,所述基于所述增量类集合和所述初始入口函数集合对所述过程间调用图进行函数节点遍历处理,以确定至少一个目标节点函数,包括:
以所述初始入口函数集合指示的至少一个初始入口函数为基准,基于增量类集合对所述过程间控制流图中各初始函数节点对应的每个下一函数节点进行节点类匹配处理,得到至少一个目标函数节点对应的目标节点函数;
其中,所述初始函数节点为所述初始入口函数在所述过程间控制流图中对应的首节点,所述目标函数节点对应的目标入口函数所属的目标函数类为所述增量类集合中的函数类。
14.根据权利要求11所述的方法,其特征在于,所述基于所述检测入口函数集合调用污点检测工具对目标应用包进行静态污点检测,得到第一污点路径集合,包括:
获取所述目标应用包对应的过程间调用图;
基于所述检测入口函数集合对所述过程间调用图进行静态污点检测,得到针对所述目标应用包的第一污点路径集合。
15.一种应用检测装置,其特征在于,所述装置包括:
获取模块,用于获取应用的目标应用包以及应用基准包;
处理模块,用于对所述目标应用包和所述应用基准包进行反编译比对处理,得到针对所述目标应用包的差异类集合;
检测模块,用于基于所述差异类集合对目标应用包进行静态污点检测,得到针对所述目标应用包的污点路径集合。
16.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~14任意一项的方法步骤。
17.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~14任意一项的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111574727.7A CN114547604A (zh) | 2021-12-21 | 2021-12-21 | 一种应用检测方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111574727.7A CN114547604A (zh) | 2021-12-21 | 2021-12-21 | 一种应用检测方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114547604A true CN114547604A (zh) | 2022-05-27 |
Family
ID=81668931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111574727.7A Pending CN114547604A (zh) | 2021-12-21 | 2021-12-21 | 一种应用检测方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114547604A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115632877A (zh) * | 2022-12-01 | 2023-01-20 | 成都九洲电子信息***股份有限公司 | 一种大规模pcap数据正确性验证方法、***及存储介质 |
-
2021
- 2021-12-21 CN CN202111574727.7A patent/CN114547604A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115632877A (zh) * | 2022-12-01 | 2023-01-20 | 成都九洲电子信息***股份有限公司 | 一种大规模pcap数据正确性验证方法、***及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107889070B (zh) | 图片处理方法、装置、终端及计算机可读存储介质 | |
US9471553B2 (en) | Automatically rendering web or hybrid applications natively | |
CN110502222B (zh) | 外发依赖内部基础库的aar方法、装置、介质和设备 | |
CN111158818A (zh) | 一种页面渲染方法和装置 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN112214653B (zh) | 字符串识别方法、装置、存储介质及电子设备 | |
CN112653670A (zh) | 业务逻辑漏洞检测方法、装置、存储介质以及终端 | |
CN109933381A (zh) | 一种内核的加载方法及装置 | |
CN110609687A (zh) | 一种编译方法、装置、电子设备和存储介质 | |
CN112527386B (zh) | 应用程序发布方法及装置 | |
CN112416303B (zh) | 软件开发工具包热修复方法、装置及电子设备 | |
CN114547604A (zh) | 一种应用检测方法、装置、存储介质及电子设备 | |
CN114461223A (zh) | 一种代码生成方法、装置及终端设备 | |
CN113407165A (zh) | Sdk的生成和自升级方法、装置、可读介质和设备 | |
CN111752644A (zh) | 接口模拟方法、装置、设备及存储介质 | |
CN115858556A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN115760391A (zh) | 区块链中智能合约更改方法、装置、电子设备及存储介质 | |
CN113972989B (zh) | 数据校验方法及存储介质、电子设备 | |
CN111796865B (zh) | 一种字节码文件修改方法、装置、终端设备及介质 | |
CN113268221A (zh) | 文件匹配方法、装置、存储介质及计算机设备 | |
CN114911541A (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN113098859A (zh) | 网页页面回退方法、装置、终端及存储介质 | |
CN105183491A (zh) | 跨平台的桌面gis***及其启动方法 | |
CN111274551A (zh) | 基于编译器的java代码保护方法、装置及电子设备 | |
CN112579072B (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 |