CN113641964B - 重打包应用检测方法、电子设备及存储介质 - Google Patents

重打包应用检测方法、电子设备及存储介质 Download PDF

Info

Publication number
CN113641964B
CN113641964B CN202111213083.9A CN202111213083A CN113641964B CN 113641964 B CN113641964 B CN 113641964B CN 202111213083 A CN202111213083 A CN 202111213083A CN 113641964 B CN113641964 B CN 113641964B
Authority
CN
China
Prior art keywords
application
similar
tested
similarity
class
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
Application number
CN202111213083.9A
Other languages
English (en)
Other versions
CN113641964A (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 University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN202111213083.9A priority Critical patent/CN113641964B/zh
Publication of CN113641964A publication Critical patent/CN113641964A/zh
Application granted granted Critical
Publication of CN113641964B publication Critical patent/CN113641964B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供一种重打包应用检测方法、电子设备及存储介质,所述方法包括:获取待测应用与多个样本应用的源代码文件,并从中提取方法调用信息;根据所述方法调用信息从多个样本应用中筛选多个相近应用;根据所述方法调用信息确定相应的调用特征信息;根据所述调用特征信息从多个所述相近应用中筛选确定相似应用;获取所述待测应用与所述相似应用的签名信息,响应于所述待测应用的签名信息与所述相似应用的签名信息不一致,确定所述待测应用为重打包应用,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行实现所述重打包应用检测方法的计算机程序,所述存储介质所存储计算机指令用于使计算机执行所述重打包应用检测方法。

Description

重打包应用检测方法、电子设备及存储介质
技术领域
本公开涉及计算机安全检测技术领域,尤其涉及一种重打包应用检测方法、电子设备及存储介质。
背景技术
随着移动终端的快速发展和网络技术的逐步成熟,安卓系统成长成为了目前最流行的操作系统,给人们的生活带来了非常大的便利。人们不仅可以通过智能手机接打电话,也可以通过智能手机实现交易转账、网上购物、观看视频等操作。广大的用户群体使得越来越多的开发者投身于安卓应用开发中。随之而来的,在应用市场中也开始出现重打包应用,重打包安卓应用是指,恶意攻击者通过反编译破解技术对正版应用进行攻击,保留正版应用的大部分信息,植入恶意信息并重新打包发布的应用。这些重打包应用为用户带来了非常严重的安全风险,这就需要针对重打包应用进行检测。
相关检测技术大多拘泥于应用特征信息的成对比较,其耗时问题导致这些检测方法无法为大型应用市场提供检测服务;一些检测方法尽力提升检测速度,如将应用刻画成向量进行比较,但在大型应用市场的检测任务中,仍然需要成对比较所有应用,其向量提取复杂度和比较耗时均有较大的提升空间;并且,相关检测技术都无法给出应用的具体相似点信息,无法为后续的分析检测提供帮助。
发明内容
有鉴于此,本公开的目的在于提出一种重打包应用检测方法、电子设备及存储介质。
基于上述目的,在第一方面,本公开提供了一种重打包应用检测方法,包括:
获取待测应用与多个样本应用的源代码文件,根据所述源代码文件提取相应的方法调用信息;
根据所述待测应用与多个所述样本应用的所述方法调用信息生成相应的方法调用向量;
根据所述方法调用向量从多个所述样本应用中筛选确定所述待测应用的相近应用;
根据所述待测应用与多个所述相近应用的所述方法调用信息生成相应的调用特征信息;
将所述待测应用的调用特征信息与所述相近应用的所述方法调用信息进行对比以确定所述待测应用与所述相近应用的相似度,根据所述相似度从多个所述相近应用中筛选确定所述待测应用的相似应用;
获取所述待测应用与所述相似应用的签名信息,响应于所述待测应用的签名信息与所述相似应用的签名信息不一致,确定所述待测应用为重打包应用。
在第二方面,本公开提供了一种重打包应用检测电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的重打包应用检测方法。
在第三方面,本公开提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如第一方面所述的重打包应用检测方法。
从上面所述可以看出,本公开提供的一种重打包应用检测方法、电子设备及存储介质,从粗粒度、细粒度两个阶段对待测应用和样本应用继续对比检测。其中,粗粒度检测阶段将搜索相近应用的问题转化为搜索相近向量的问题,引入近似最近邻算法,可以大大缩小检索时间,确定相近应用;细粒度检测阶段提取应用使用的敏感方法相关的调用特征信息,将这些信息压缩成模糊哈希值,对模糊哈希值进行相似度的比较,从而筛选得出待测应用的相似应用,同时还能够得到具体相似点相关的应用方法信息;最后再通过签名信息的对比确定检测结果。采用这样的方式进行重打包应用检测,在粗粒度检测阶段即使面对大型应用市场也能够快速缩小筛选检测范围,高效准确的确定出与待测应用相对应的相似应用,细粒度检测阶段进行特征提取和抽象,能够有效抵抗代码混淆、代码重排序、插入无效代码带来的检测干扰,保证检测精度,具有较高的实用性和鲁棒性。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例所提供的一种重打包应用检测方法示意图;
图2为本公开实施例所提供的一种重打包应用检测方法中筛选相近应用的方法示意图;
图3为本公开实施例所提供的一种重打包应用检测方法中生成调用特征信息的方法示意图;
图4为本公开实施例所提供的一种重打包应用检测方法中确定待测应用与相近应用相似度的方法示意图;
图5为本公开实施例所提供的一种重打包应用检测电子设备示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
重打包安卓应用是指,恶意攻击者通过反编译破解技术对正版应用进行攻击,保留正版应用的大部分信息,植入恶意信息并重新打包发布的应用。这些重打包应用为用户带来了非常严重的安全风险,这就需要针对重打包应用进行检测。
当前对安卓重打包应用的检测技术大多依托于安卓应用静态信息的成对比较,如安卓应用的代码信息、安卓应用的UI界面布局信息、安卓应用的文件信息等。比较过程往往如下:
(1)提取要比较的两个安卓应用的静态信息特征,如代码信息、UI信息;(2)对两个应用的特征进行相似度比较,计算其特征相似度得分,作为应用的相似度得分;(3)如果相似度得分超过阈值,则认为两个安卓应用是相似的。再根据两个应用间的签名信息来判断两个应用是否为同一开发者,如不是同一开发者,则认为两个应用是一对重打包应用,后续需要安全研究元手动分析,判断其具体的重打包行为;
这样的成对比较的所耗时间在小型数据集中是可以忍受的,但如在现实的大型应用市场中进行检测,这样的耗时是无法忍受的。设想一对安卓应用的相似度比较需要消耗时间为5s(已经非常短),给定一个安卓应用,要在一个拥有十万应用的市场中检测出它的重打包应用,就需要成对比较十万次,也就是需要500000s,约139h,这样的耗时显示上述类型的检测方法无法为大型应用市场提供检测服务。
一些检测方法将安卓应用抽象成为程序控制图,再将程序控制图抽象为一定维度的向量,两个向量之间的相似度就代表了应用的相似度。这样的检测方法虽然一定程度上缩短比较的时间,但是应用到大型应用市场中时,依然需要与市场内的全部应用向量进行成对比较;同时,其特征提取方法过于复杂,向量间的比较仅能得出相似度得分,无法为安全研究员提供两个应用的相似点,不利于研究员对重打包行为的进一步研判。
针对上述问题,本公开不再直接采用应用的静态信息来进行检测比较,将检测工作分为粗、细粒度检测两个阶段,在粗粒度检测阶段进行初步的筛选快速缩小对比检测范围,细粒度检测阶段提取并抽象特征信息再继续详细对比,提高检测效率的同时也保证检测结果的准确有效。
基于上述发明构思,本公开实施例提供一种重打包应用检测方法。
如图1所示,本公开的一个或多个可选实施例所提供的一种重打包应用检测方法,包括:
S1:获取待测应用与多个样本应用的源代码文件,根据所述源代码文件提取相应的方法调用信息。
首先对待测应用和样本库中的多个样本应用继续预处理,可以利用Apktool工具对应用进行反编译操作,获取到相应的源代码文件(如Smali代码文件)。在一些可选实施例中,在反编译获得Smali代码文件后分析其使用的第三方库信息,如果相应应用去除第三方库代码后剩余代码行数未超过预设行数,则不过滤第三方库代码,将反编译直接获得的Smali文件作为所述源代码文件;如果除去第三方库代码剩余部分代码行数超过预设行数,则滤除第三方库代码,选用剩余的Smali代码作为所述源代码文件。其中,所述预设行数可以设定为300行,也可以根据实际情况进行设定改动为其他合适的数值。
需要说明的是,两个代码完全不相似的应用,其所调用的应用程序接口(Application Programming Interface,API )的调用类型、调用频率不太可能相似;但两个代码相似的应用,其API调用的类型和频率是相似的。因此在本公开实施例中从所述源代码文件中提取相应的API调用的相关信息作为后续的粗、细粒度检测的基础依据。在一些可选实施例中,可以通过遍历所述源代码文件中的方法调用关键词来确定所述源代码文件中所有被调用的方法。例如,可以遍历反编译得到的Smali文件中的“invoke”关键词找到应用中所调用的方法。
进一步的,应用中所调用的多个API中与申请权限相关的敏感API是实现复杂应用功能的基础,其调用频率更能反映出应用的功能特性。因此在一些可选实施例中,可以将所有被调用的方法与预设的敏感方法集合进行对比,从所有被调用的方法中进一步筛选出与申请权限相关的多个敏感方法,确定所述敏感方法的方法名与调用频数来作为方法调用信息。
以所述待测应用为例,可以先根据所述待测应用的源代码文件确定其所有被调用的方法(假设共有1000个被调用的方法),通过与预设的敏感方法集合(假设有300个敏感方法)进行对比,从这1000个被调用方法中筛选出300个与申请权限相关敏感方法。在后续方法中只需针对这300个敏感方法相关信息进行处理。
这样的方式能够在预处理保证所获取方法调用信息数据有效性的同时,大大降低所需要处理的数据量,提高方法执行效率。
S2:根据所述待测应用与多个所述样本应用的所述方法调用信息生成相应的方法调用向量。
在一些可选实施例中,可以将所述方法调用信息中多个所述敏感方法的所述调用频数作为所述方法调用向量的元素,按照预设排列顺序将多个所述元素进行排列以构成所述方法调用向量。用所述方法调用向量来表征相应应用的相关信息,作为后续比较检测的依据。
同样以所述待测应用为例,相应的所述方法调用信息包括300个所述敏感方法的方法名与调用频数,可以将这300个敏感方法的调用频数按照一定顺序排列组合成一个300维的数组,用这个数组来表示所述待测应用的方法调用向量。
S3:根据所述方法调用向量从多个所述样本应用中筛选确定所述待测应用的相近应用。
可以将所述待测应用的方法调用向量与多个所述样本应用的方法调用向量进行对比,根据方法调用向量间的相似相近程度从多个样本应用中筛选确定与所述待测应用对应的相近应用。
S4:根据所述待测应用与多个所述相近应用的所述方法调用信息生成相应的调用特征信息。
筛选确定所述待测而应用的相近应用其依据为方法调用向量,方法调用向量能够在一定程度上表征相应应用信息,但是在更细粒度进一步进行检测时,方法调用向量就不再满足要求,就需要进一步提取出更多与方法调用相关的信息用作后续细粒度筛选检测的依据。因此在一些可选实施例中,可以从所述待测应用与多个所述相近应用的所述方法调用信息提取生成相应的调用特征信息。
S5:将所述待测应用的调用特征信息与所述相近应用的所述调用信息进行对比以确定所述待测应用与所述相近应用的相似度,根据所述相似度从多个所述相近应用中筛选确定所述待测应用的相似应用。
S6:获取所述待测应用与所述相似应用的签名信息,响应于所述待测应用的签名信息与所述相似应用的签名信息不一致,确定所述待测应用为重打包应用。
通过相似度比较筛选得到的所述相似应用,与所述待测应用相比,所存在的差异已经非常小,在一定程度上可以将所述待测应用视为与所述相似应用相同的应用,此时再检测对比二者的签名信息,若签名信息不一致则基本上可以确定所述待测应用就是所述相似应用的重打包应用。
本公开提供的一种重打包应用检测方法,从粗粒度、细粒度两个阶段对待测应用和样本应用继续对比检测。其中,粗粒度检测阶段将搜索相近应用的问题转化为搜索相近向量的问题,缩小检索时间,快速确定相近应用;细粒度检测阶段提取应用使用的敏感方法相关的调用特征信息,筛选得出待测应用的相似应用,同时还能够得到具体相似点相关的应用方法信息;最后再通过签名信息的对比确定检测结果。采用这样的方式进行重打包应用检测,在粗粒度检测阶段即使面对大型应用市场也能够快速缩小筛选检测范围,高效准确的确定出与待测应用相对应的相似应用,细粒度检测阶段进行特征提取和抽象,能够有效抵抗代码混淆、代码重排序、插入无效代码带来的检测干扰,保证检测精度,具有较高的实用性和鲁棒性。
如图2所示,在本公开的一个或多个可选实施例所提供的一种重打包应用检测方法中,所述根据所述方法调用向量从多个所述样本应用中筛选确定所述待测应用的相近应用S3,进一步包括:
S201:利用多个所述样本应用相应的多个所述方法调用向量构建样本向量库。
S202:采用基于图的近似最近邻算法对所述样本向量库中的多个所述方法调用向量进行分析,生成快速检测索引。
S203:利用所述快速检测索引在所述样本向量库中检索确定与所述待测应用的所述方法调用向量相对应的相近向量。
S204:选取与所述相近向量相对应的所述样本应用为所述相近应用。
所述方法调用向量是具有多维度元素的数据向量,直接将所述待测应用的所述方法调用向量与多个所述样本应用的所述方法调用向量进行对比查询,从大量的高维数据向量中寻找到与所述待测应用的所述方法调用向量,需要耗费一定的时间。而基于图的近似最近邻算法能够大大算法查询时间,基于图的近似最近邻算法NSG能够在一亿个96维向量构成的大型数据集中,单向量相似检索耗时仅需1ms,并且将检索精度提升至了99%。因此在本公开一些可选实施例中,可以采用基于图的近似最近邻算法进行对比查询。利用基于图的近似最近邻算法所提供的方法接口,通过对所述样本向量库中的多个所述方法调用向量进行分析,针对样本向量库生成粗粒度的快速检测索引。之后就可以利用该快速检测索引在所述样本向量库中查询与所述待测样本的所述方法调用向量相对应的一个或多个相近向量,与所述相近向量相对应的所述样本应用就是所述待测应用的相近应用。
在一些可选实施例中,利用多个所述方法调用向量构建样本向量库时,可以对应去除第三方库代码的源代码文件和保留第三方库代码的源代码文件分别构建对应的样本向量库,并分别生成相应的快速检测索引。
以预设行数是300的情况为例,如果样本应用去除第三方库代码后剩余代码行数未超过预设行数300行,则不过滤第三方库代码,将反编译直接获得的Smali文件作为所述源代码文件,对于符合这样情况的多个所述样本应用,利用相应的多个方法调用向量生成包含第三方信息的样本向量库,再利用基于图的近似最近邻算法生成相应的快速检测索引;如果除去第三方库代码剩余部分代码行数超过预设行数300行,则滤除第三方库代码,选用剩余的Smali代码作为所述源代码文件,对于符合这样情况的多个所述样本应用,利用相应的多个方法调用向量生成不包含第三方信息的样本向量库,再利用基于图的近似最近邻算法生成相应的快速检测索引。
之后,利用所述快速检测索引在所述样本向量库中检索时,也对所述待测应用进行分情况分析。如果所述待测应用去除第三方库代码后剩余代码行数未超过预设行数300行,则不过滤第三方代码,相应的可以使用包含第三方信息的样本向量库和相应的快速检测索引进行检测;如果所述待测应用去除第三方库代码后剩余代码行数超过预设行数300行,则滤除第三方代码,相应的可以使用不包含第三方信息的样本向量库和相应的快速检测索引进行检测。
如图3所示,在本公开的一个或多个可选实施例所提供的一种重打包应用检测方法中,所述根据所述待测应用与多个所述相近应用的所述方法调用信息生成相应的调用特征信息,进一步包括:
S301:将所述方法调用信息中的多个所述敏感方法按照所属源代码类划分至多个类组。
所述方法调用信息中的多个所述敏感方法分属于不同的源代码类,在一些可选实施例中,将多个所述敏感方法按照所属源代码类划分至不同类组时,将所述类组中的多个所述敏感方法按照预设规则重新排序整理。例如,可以根据多个所述敏感方法的方法名首字母进行排列,或者可以根据多个所述敏感方法在预设的敏感方法集合中先后顺序进行排列,也可以将多个所述敏感方法与一些开源代码库进行对比,根据对应代码在相应开源库中组织排列顺序来确定在所述类组中的排列顺序。
因为一些攻击者重打包应用时会对源代码进行重排序,以躲避安全人员的检测,本公开实施例所提供的重打包应用检测方法不关注实际的方法调用顺序,而是统一按照特定规则重新排序,这样的方式能够规避掉前述攻击者对源码重排序造成的影响,保证提取调用特征信息的有效性,从而能够保证后续根据所述调用信息特征进行相似度对比的有效性。
S302:将每个所述类组中多个所述敏感方法的所述方法名拼接成类组文本。
将多个所述敏感方法的所述方法名进行拼接时,其拼接顺序即为多个所述敏感方法的重排列后的顺序。对于不同应用中实质相似的两个类而言,尽管不同类各自方法调用的关系、顺序等可能存在差异,但采用这样的方式所生成的所述类组文本是相似的,从而就可以利用所述类组文本来实现应用中类的对比。
S303:利用模糊哈希算法将所述类组文本转换为模糊哈希值。所述调用特征信息包括多个所述类组相应的所述模糊哈希值。
在一些可选实施例中,将所述类组文本转换为模糊哈希值,以便于后续根据所述模糊哈希值进行对应类组的相似度对比。传统的哈希算法会将一段文本映射成一段固定值,原文本只要变更一点点,也会引起哈希值得剧烈变化,失去比较意义。相比于传统的哈希算法,本公开实施例中采用模糊哈希算法进行映射转换,模糊哈希算法类似于模糊逻辑搜索,它生成的哈希值可以用来寻找相似的文本值。
在为所述类组文本生成相应的所述模糊哈希值之后,将所述类组文本相应的所述源代码类名与所述模糊哈希值连接组合为(key:Value)的结构进行表示。其中,“key”由源代码的包名和类名构成,“Value”表示相应的所述模糊哈希值。其中,“Key”用以回溯在源代码中位置,方便后续根据相似性对比结果快速回溯确定相似的类各自应用中的位置。每个应用包括多个类,也就由多个(key:Value)这样的结构组成。
如图4所示,在本公开的一个或多个可选实施例所提供的一种重打包应用检测方法中,所述将所述待测应用的调用特征信息与所述相近应用的所述调用信息进行对比以确定所述待测应用与所述相近应用的相似度,进一步包括:
S401:分别将所述待测应用的多个所述模糊哈希值与所述相近应用的多个所述模糊哈希值一一进行对比,计算确定相应的类相似度。
将所述待测应用的多个所述模糊哈希值与所述相近应用的多个所述模糊哈希值进行对比时,可以先从所述待测应用的多个类组的所述模糊哈希值中选出一个,将该模糊哈希值先后与所述相近应用的多个所述模糊哈希值进行对比。之后再选择所述待测应用中的另一个所述模糊哈希值与所述相近应用的多个所述模糊哈希值进行对比。每次对比都是成对进行,计算确定成对对比的两个所述模糊哈希值的相似度,即两个所述模糊哈希值各自对应的所述类组之间的所述类相似度。
S402:根据所述类相似度确定所述待测应用与所述相近应用的相似类组个数。
将所述类相似度与预设类相似阈值T进行比较,所述类相似度超过所述类相似阈值T,则说明所述类相似度在所述待测应用中的相应类组与在所述相近应用中的相应类组为相似类组。其中,所述类相似阈值T的具体值可以根据实际情况进行灵活设定调整,一般情况下所述类相似阈值T的值多设置为0.9。
在一些可选实施例中,可以先将相似类组个数S的初始值设置为0;
分别将多个所述类相似度与预设的类相似阈值T进行对比;
每当所述类相似度大于所述类相似阈值,确定所述待测应用中的相应类组与所述相近应用中的相应类组为相似类组,即所述待测应用与所述相近应用存在一组相似类组,所述相似类组个数S的值加一;
将多个所述类相似度与预设的类相似阈值T对比之后,得到的S值即为最终的相似类组个数。
S403:根据所述待测应用的类组个数、所述相近应用的类组个数以及所述相似类组个数计算确定所述待测应用与所述相近应用的相似度SimilarityScore
Figure 412625DEST_PATH_IMAGE001
其中,S表示所述相似类组个数,O、R分别表示所述待测应用、所述相近应用的类组个数。
在分别确定所述待测应用与多个所述相近应用的所述相似度之后,可以根据所述相似度从多个所述相近应用中筛选出所述待测应用的相似应用。可以分别将多个所述相似度与预设的应用相似阈值进行对比;
若所述相似度大于所述应用相似阈值,则说明所述待测应用与所述相似度对应的所述相近应用极为相似,确认该相近应用为所述相似应用。其中,所述应用相似阈值可以根据实际情况进行灵活调整。
若通过对比之后,发现所有相似度均未超过所述应用相似阈值,则说明所述待测应用相比多个所述相近引用都存在较大的差异,这种情况下可以认定所述待测应用不是重打包应用。
而对于存在相似应用的情况,本申请方法对所述待测应用和所述相似应用进行进一步的对比验证。可以提取相应应用的ERT.RSA文件中的信息确定相应的签名信息,若所述待测应用的签名信息与所述相似应用的签名信息不一致,则说明二者的上传发布者不同,可以认定所述待测应用为所述相似应用重打包后的应用。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的重打包应用检测方法。
图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线 1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的重打包应用检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的重打包应用检测方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的重打包应用检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (6)

1.一种重打包应用检测方法,所述方法包括:
获取待测应用与多个样本应用的源代码文件,根据所述源代码文件提取相应的方法调用信息,包括:
通过遍历所述源代码文件中的方法调用关键词确定所述源代码文件中所有被调用的方法,并从中筛选出与申请权限相关的多个敏感方法;
确定所述敏感方法的方法名与调用频数,所述方法调用信息包括多个所述敏感方法的所述方法名与所述调用频数;
根据所述待测应用与多个所述样本应用的所述方法调用信息生成相应的方法调用向量,包括:
将所述方法调用信息中多个所述敏感方法的所述调用频数作为所述方法调用向量的元素,按照预设排列顺序将多个所述元素进行排列以构成所述方法调用向量;
根据所述方法调用向量从多个所述样本应用中筛选确定所述待测应用的相近应用;
根据所述待测应用与多个所述相近应用的所述方法调用信息生成相应的调用特征信息,包括:
将所述方法调用信息中的多个所述敏感方法按照所属源代码类划分至多个类组,并将所述类组中的多个所述敏感方法按照预设规则重新排序整理;
按照重排列后的顺序将每个所述类组中多个所述敏感方法的所述方法名拼接成类组文本;
利用模糊哈希算法将所述类组文本转换为模糊哈希值,所述调用特征信息包括多个所述类组相应的所述模糊哈希值;
将所述待测应用的调用特征信息与所述相近应用的所述调用信息进行对比以确定所述待测应用与所述相近应用的相似度,根据所述相似度从多个所述相近应用中筛选确定所述待测应用的相似应用;
获取所述待测应用与所述相似应用的签名信息,响应于所述待测应用的签名信息与所述相似应用的签名信息不一致,确定所述待测应用为重打包应用。
2.根据权利要求1所述的方法,其中,所述根据所述方法调用向量从多个所述样本应用中筛选确定所述待测应用的相近应用,进一步包括:
利用多个所述样本应用相应的多个所述方法调用向量构建样本向量库;
采用基于图的近似最近邻算法对所述样本向量库中的多个所述方法调用向量进行分析,生成快速检测索引;
利用所述快速检测索引在所述样本向量库中检索确定与所述待测应用的所述方法调用向量相对应的相近向量;
选取与所述相近向量相对应的所述样本应用为所述相近应用。
3.根据权利要求1所述的方法,其中,所述将所述待测应用的调用特征信息与所述相近应用的所述调用信息进行对比以确定所述待测应用与所述相近应用的相似度,进一步包括:
分别将所述待测应用的多个所述模糊哈希值与所述相近应用的多个所述模糊哈希值一一进行对比,计算确定相应的类相似度;
根据所述类相似度确定所述待测应用与所述相近应用的相似类组个数;
根据所述待测应用的类组个数、所述相近应用的类组个数以及所述相似类组个数计算确定所述待测应用与所述相近应用的相似度SimilarityScore
SimilarityScore=max{S/O,S/R};
其中,S表示所述相似类组个数,O、R分别表示所述待测应用、所述相近应用的类组个数。
4.根据权利要求3所述的方法,其中,所述根据所述类相似度确定所述待测应用与所述相近应用的相似类组个数,进一步包括:
设置所述相似类组个数S的初始值为0;
分别将多个所述类相似度与预设的类相似阈值进行对比;
响应于所述类相似度大于所述类相似阈值,确定所述待测应用中的相应类组与所述相近应用中的相应类组为相似类组,所述相似类组个数S的值加一;
所述根据所述相似度从多个所述相近应用中筛选确定所述待测应用的相似应用,进一步包括:
分别将多个所述相似度与预设的应用相似阈值进行对比;
响应于所述相似度大于所述应用相似阈值,确定与所述相似度对应的所述相近应用为所述相似应用。
5.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至4任意一项所述的方法。
6.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1至4任一所述方法。
CN202111213083.9A 2021-10-19 2021-10-19 重打包应用检测方法、电子设备及存储介质 Active CN113641964B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111213083.9A CN113641964B (zh) 2021-10-19 2021-10-19 重打包应用检测方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111213083.9A CN113641964B (zh) 2021-10-19 2021-10-19 重打包应用检测方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113641964A CN113641964A (zh) 2021-11-12
CN113641964B true CN113641964B (zh) 2022-05-17

Family

ID=78427363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111213083.9A Active CN113641964B (zh) 2021-10-19 2021-10-19 重打包应用检测方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113641964B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105389508A (zh) * 2015-11-10 2016-03-09 工业和信息化部电信研究院 一种安卓重打包应用的检测方法及装置
CN106951780A (zh) * 2017-02-08 2017-07-14 中国科学院信息工程研究所 重打包恶意应用的静态检测方法和装置
CN107239678A (zh) * 2017-05-10 2017-10-10 东南大学 一种基于Java文件目录结构的Android应用重打包检测方法
EP3528149A4 (en) * 2016-10-11 2019-10-16 Alibaba Group Holding Limited METHOD AND DEVICE FOR PREVENTING SOFTWARE RECONDITIONING

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105389508A (zh) * 2015-11-10 2016-03-09 工业和信息化部电信研究院 一种安卓重打包应用的检测方法及装置
EP3528149A4 (en) * 2016-10-11 2019-10-16 Alibaba Group Holding Limited METHOD AND DEVICE FOR PREVENTING SOFTWARE RECONDITIONING
CN106951780A (zh) * 2017-02-08 2017-07-14 中国科学院信息工程研究所 重打包恶意应用的静态检测方法和装置
CN107239678A (zh) * 2017-05-10 2017-10-10 东南大学 一种基于Java文件目录结构的Android应用重打包检测方法

Also Published As

Publication number Publication date
CN113641964A (zh) 2021-11-12

Similar Documents

Publication Publication Date Title
US11605087B2 (en) Method and apparatus for identifying identity information
CN110489345B (zh) 一种崩溃聚合方法、装置、介质和设备
JP6689283B2 (ja) 装置指紋をインターネット装置に割り当てるための方法及び機器
CN116303459A (zh) 处理数据表的方法及系统
CN110751218A (zh) 图像分类方法、图像分类装置及终端设备
CN111008620A (zh) 目标用户识别方法、装置及存储介质、电子设备
CN112347512A (zh) 图像处理方法、装置、设备及存储介质
CN113961919A (zh) 恶意软件检测方法和装置
CN112579146A (zh) 接口变化的检测方法及装置
CN108132864B (zh) 终端验证的方法、终端设备及计算机可读介质
CN111597553A (zh) 病毒查杀中的进程处理方法、装置、设备及存储介质
CN111445258A (zh) 风险防控信息处理方法、装置及设备
CN108197955B (zh) 终端验证的方法、终端设备及计算机可读存储介质
CN108229975B (zh) 终端验证的方法、终端设备及计算机可读存储介质
CN113254577A (zh) 敏感文件检测方法、装置、设备及存储介质
CN111222181B (zh) Ai模型的监管方法、系统、服务器及存储介质
CN111460448B (zh) 一种恶意软件家族检测方法及装置
CN113641964B (zh) 重打包应用检测方法、电子设备及存储介质
CN110990834A (zh) 一种android恶意软件的静态检测方法、系统及介质
CN105354506A (zh) 隐藏文件的方法和装置
Congyi et al. Method for detecting Android malware based on ensemble learning
CN111143203B (zh) 机器学习、隐私代码确定方法、装置及电子设备
CN115168575A (zh) 应用于审计领域的主语补全方法及相关设备
CN115470190A (zh) 一种多存储池数据分类存储方法、系统与电子设备
US11356853B1 (en) Detection of malicious mobile apps

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