CN104794167A - 获取相似应用的方法及装置 - Google Patents
获取相似应用的方法及装置 Download PDFInfo
- Publication number
- CN104794167A CN104794167A CN201510142687.7A CN201510142687A CN104794167A CN 104794167 A CN104794167 A CN 104794167A CN 201510142687 A CN201510142687 A CN 201510142687A CN 104794167 A CN104794167 A CN 104794167A
- Authority
- CN
- China
- Prior art keywords
- application
- identified
- cryptographic hash
- similar
- contents fragment
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种获取相似应用的方法及装置。方法包括:确定至少两个待识别应用;根据所述至少两个待识别应用的内容,识别所述至少两个待识别应用中是否存在相似应用。本发明可以提高获取相似应用的成功概率。
Description
【技术领域】
本发明涉及软件技术领域,尤其涉及一种获取相似应用的方法及装置。
【背景技术】
目前,应用(app)的数量已经越来越多,甚至达到了千万级别的数量。如何在大量的应用中找到与目标应用相似的应用成为亟需解决的问题。
针对上述问题,现有做法一般是根据目标应用的名称或目标应用的安装包(apk)的包名进行查找,以获取与目标应用相似的应用。在实际应用中,同一应用在分发过程中其名称或包名有可能变化,这使得目前根据名称或包名查找相似应用的方法会失效,获取相似应用的成功率较低
【发明内容】
本发明的多个方面提供一种获取相似应用的方法及装置,用以提高获取相似应用的成功概率。
本发明的一方面,提供一种获取相似应用的方法,包括:
确定至少两个待识别应用;
根据所述至少两个待识别应用的内容,识别所述至少两个待识别应用中是否存在相似应用。
本发明的另一方面,提供一种获取相似应用的装置,包括:
确定模块,用于确定至少两个待识别应用;
识别模块,用于根据所述至少两个待识别应用的内容,识别所述至少两个待识别应用中是否存在相似应用。
在本申请中,在确定至少两个待识别应用之后,根据至少两个待识别应用的内容,识别至少两个待识别应用中是否存在相似应用,达到获取相似应用的目的,本申请不是通过应用的名称或包名来发现相似应用,而是根据应用的内容来获取相似应用,可以避免因应用的名称或包名发生变化导致获取相似应用失败的情况,有利于提高获取相似应用的成功概率。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明一实施例提供的获取相似应用的方法的流程示意图;
图2为本发明一实施例提供的获取相似应用的装置的结构示意图;
图3为本发明另一实施例提供的获取相似应用的装置的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
随着应用数量越来越多,为了用户能够成功的从大量应用中获取相似应用,本发明提供一种获取相似应用的方法。该方法的主要思想是:基于应用的内容,来判断应用之间是否相似。由于不再通过应用的名称或包名来发现相似应用,可以避免因应用的名称或包名发生变化导致获取相似应用失败的情况,有利于提高获取相似应用的成功概率。
为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述。
图1为本发明一实施例提供的获取相似应用的方法的流程示意图。如图1所示,该方法包括:
101、确定至少两个待识别应用。
102、根据至少两个待识别应用的内容,识别至少两个待识别应用中是否存在相似应用。
在本实施例中,为便于进行描述,将需要进行相似性识别的应用称为待识别应用。其中,相似性识别至少涉及两个待识别应用。
在一种应用场景中,已知某个应用,可称为目标应用,用户需要从其它应用中发现与该目标应用相似的应用。在该应用场景中,实际上是要判断目标应用和其它应用是否相似,因此,目标应用以及其它应用都可作为本实施例中的待识别应用。
在另一种应用场景中,已知至少两个应用,用户需要从已知的至少两个应用中发现相似的应用。在该应用场景中,实际上是要判断两两应用是否相似,因此,已知的至少两个应用都可以作为本实施例中的待识别应用。
在确定至少两个待识别应用之后,根据至少两个待识别应用的内容,来识别至少两个应用中是否存在相似应用。其中,待识别应用的内容可以是但不限于:待识别应用中的文件。由于不在基于待识别应用的名称或包名,而是基于应用的内容,所以即使应用的名称或包名发生了变化,也可以识别出实质上相似的应用。与现有技术相比,本实施例基于应用的内容来识别相似应用的方法,有利于提高获取相似应用的成功概率。
一种根据至少两个待识别应用的内容,识别至少两个待识别应用中是否存在相似应用的简单实现方式为:直接将每两个待识别应用的内容进行比较,若内容相似度达到一定程度(例如大于预设的相似度门限),则确定两个待识别应用相似,反之,确定两个待识别应用不相似。
在此说明,在本申请实施例中,认为“相同”是一种相似度为百分之百的相似。
进一步,在实际应用中,应用的内容也可能发生一些变化,在这种情况下,若将应用的内容作为一个整体进行相似性判断,有可能无法识别出相似应用。为了能够更好的基于应用的内容进行相似应用的识别,本实施例进一步给出一种方法:
将至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段;根据每个待识别应用的至少一个内容片段,识别至少两个待识别应用中是否存在相似应用。
对一个应用来说,若该应用的部分内容发生了变化,那么从整个内容的角度来看,变化前的应用和变化后的应用的内容是不同的,但是这并不表示这两个应用不相似。例如,假设有两个应用是同一应用的不同版本,那么这两个应用实质上是相似的。对于实质上相似的两个应用来说,其内容总有一些是相近的,而且相近的内容越多,意味着这两个应用越相似。
基于此,本实施例通过将应用的内容划分为至少一个内容片段,通过待识别应用的内容片段来识别待识别应用是否相似,可以识别出内容发生变化的应用是否相似,有利于进一步提高识别相似应用的成功概率。
例如,可以预先设定片段粒度,按照该片段粒度对待识别应用的内容进行拆分,从而将待识别应用的内容拆分成至少一个内容片段。
进一步,考虑到待识别应用的内容主要是指待识别应用中的文件,而这些文件可能包括文本文件、音频文件、图像文件等多种类型,若将所有文件全部拆分成内容片段,其处理复杂度较大,消耗的资源较多,并且还会影响识别相似应用的效率。基于此,本实施例提供一种解决方法,具体为:
首先将至少两个待识别应用中的每个待识别应用的内容划分为文本类文件和二进制类文件;例如,可以将待识别应用中的布局文件(如xml文件)和文本文件(如txt文件)归为文本类文件,而将待识别应用中的其余文件,如图像文件、音频文件等归为二进制类文件;对于二进制类文件,直接将其作为一个内容片段,即将二进制类文件作为一个整体进行处理;对文本类文件,可以按照预设的片段粒度,将文本类文件拆分为至少一个内容片段。
由上述可见,通过将待识别应用的内容划分为文本类文件和二进制类文件,并且只对其中的文本类文件进行拆分,而不对二进制类文件进行拆分,一方面可以达到利用内容片段进行相似应用识别的目的,另一方面还可以降低拆分工作量,节约资源、提高识别相似应用的效率。
上述片段粒度越细,则每个文本类文件拆分出的内容片段的数量就越多,意味着进行相似应用识别的粒度越细,识别精度越高;上述片段粒度越粗,则每个文本类文件拆分出的内容片段的数量就越少,意味着进行相似应用识别的粒度越粗,识别精度相对较低。值得说明的是,本实施例不对上述片段粒度进行限制。例如,可以将文本类文件中的一行或某个对象(如Unity3D中的资源文件)作为片段粒度,
基于上述拆分出的内容片段,一种根据内容片段,识别至少两个待识别应用中是否存在相似应用方式具体为:可以将至少两个待识别应用中的每两个待识别应用的至少一个内容片段进行比较,若相似度达到一定程度(例如大于预设的相似度门限)的内容片段的数量较多(例如大于预设的数量门限),则确定两个待识别应用相似,反之,确定两个待识别应用不相似;进而可以确定至少两个待识别应用中是否存在相似应用。
进一步,考虑到内容片段的数量较多,若直接比较内容片段是否相似,工作量较大,处理效率较低。基于此,本实施例给出一种解决方法,具体为:
对每个待识别应用的至少一个内容片段进行相似哈希处理,以获得每个待识别应用的相似哈希值;根据每个待识别应用的相似哈希值,识别至少两个待识别应用中是否存在相似应用。
可选的,本实施例可以借鉴现有simhash算法,对每个待识别应用的至少一个内容片段进行相似哈希处理。本实施例中的相似哈希处理与现有simhash算法相类似,却不完全相同,可称为类simhash算法。对上述至少两个待识别应用中的每个待识别应用来说,均采用类simhash算法进行相似哈希处理,从而获得每个待识别应用的相似哈希值。本实施例的类simhash算法的过程如下:
选定一常规哈希算法,如md5哈希算法,并创建一全局数组,该全局数组的长度与选定的常规哈希算法计算出的哈希值的长度相同,该全局数组中存储数字类型数据,如int型,选定的常规哈希算法用于对每个待识别应用的至少一个内容片段进行哈希处理;
采用常规哈希算法对待识别应用的至少一个内容片段中的每个内容片段进行哈希运算,以获得每个内容片段的哈希值,根据每个内容片段的哈希值更新全局数组;
在更新全局数组之后,将更新后的全局数组转换为哈希值,以作为待识别应用的相似哈希值。
值得说明的是,由于待识别应用中的文本类文件被拆分为至少一个内容片段,所以在上述采用常规哈希算法进行哈希处理过程中,文本类文件会产出至少一个哈希值;而由于二进制类文件作为一个整体,所以在上述采用常规哈希算法进行哈希处理过程中,二进制类文件产出一个哈希值。
上述用每个内容片段的哈希值对全局数组进行更新时,更新规则为:若哈希值的第i位的取值为1,则将全局数组中第i位的数值加1;若哈希值的第i位的取值为0,则将全局数组中第i位的数值减1,i=0,1,…,(N-1),N是常规哈希算法计算出的哈希值的长度或者是全局数组的长度。
上述将更新后的全局数据转换为哈希值时的转换规则为:若全局数组中的第i位的数值大于0,将哈希值的第i位的取值置为1,若全局数组中的第i位的数值小于或等于0,将哈希值的第i位的取值置为0,i=0,1,…,(N-1),N是常规哈希算法计算出的哈希值的长度或者是全局数组的长度。
在此说明一下,在上述实施方式中,可以先执行哈希运算,获得待识别应用中所有内容片段的哈希值,之后,执行根据每个内容片段的哈希值更新全局数组的操作。或者,也可以边执行哈希运算,边更新全局数组,即每计算出一个内容片段的哈希值,就执行一次对全局数组的更新操作。其中,边执行哈希运算,边更新全局数组的实施方式如下:
在将待识别应用的内容划分为文本类文件和二进制类文件后,可以按照预设的片段粒度,对文本类文件进行拆分,以获得至少一个内容片段,采用常规哈希算法逐个对内容片段进行哈希运算,并且每计算出一个内容片段的哈希值,就用所计算出的哈希值更新全局数组,当处理完文本类文件拆分出的内容片段后,将整个二进制类文件作为一个内容片段,采用常规哈希算法对二进制类文件进行哈希运算,获得二进制类文件的哈希值,并用该哈希值更新全局数组,以最终获得更新后的全局数组。
值得说明的是,上述处理文本类文件和二进制类文件的先后顺序也可以调换一下,或者并行执行。
进一步,在上述采用常规哈希算法对待识别应用的至少一个内容片段进行哈希运算的过程中,可能会计算出多个哈希值,多个哈希值中可能存在相同哈希值,即同一哈希值会重复出现。若同一哈希值重复出现,那么该哈希值就会重复更新全局数组,这样重复出现的哈希值会给最终计算出的待识别应用的相似哈希值带来偏移,即将最终计算出的待识别应用的相似哈希值拉向该重复出现的哈希值,这会影响待识别应用的相似哈希值的计算精度,进而降低识别相似应用的成功概率。针对该问题,本实施例给出一种解决方法,具体为:
在根据内容片段的哈希值更新全局数组之前,判断待识别应用的至少一个内容片段的哈希值中,是否存在重复出现的哈希值;如果判断结果为存在,则确定采用该重复出现的哈希值对全局数组进行更新的更新次数,并限定该更新次数小于该重复出现的哈希值的重复出现次数。
基于上述,在根据重复出现的哈希值对全局数组进行更新时,可以根据该更新次数,采用重复出现的哈希值对全局数组进行更新。
在该实施方式中,通过减少重复出现的哈希值对全局数组的更新次数,达到降低重复出现的哈希值给最终计算出的待识别应用的相似哈希值带来的偏移,提高待识别应用的相似哈希值的计算精度,进而提高识别相似应用的成功概率。
可选的,当判断出待识别应用的至少一个内容片段的哈希值中存在重复出现的哈希值时,可以通过对哈希值进行去重处理,即将后续重复出现的哈希值直接忽略掉,从而达到减少重复出现的哈希值对全局数组的更新次数的目的。在去重处理方案中,重复出现的哈希值只对全局数组进行一次更新。
去重处理的过程可以是:将当前哈希值与之前已经计算出的哈希值进行比较,以判断之前已经计算出的哈希值中是否存在与当前哈希值相同的哈希值,若存在,将舍弃当前哈希值(这里的舍弃主要是指不使用当前哈希值对全局数组进行更新),否则,保留当前哈希值(这里的保留主要是指使用当前哈希值对上述全局数组进行更新),从而达到去重的目的。
可选的,当判断出待识别应用的至少一个内容片段的哈希值中存在重复出现的哈希值时,可以统计重复出现的哈希值的重复出现次数,进而对该重复出现次数进行数值处理,例如开根号、乘以小于1的系数等,以获得小于该重复出现次数的一个数值,作为该重复出现的哈希值对全局数组的更新次数。
在一可选实施方式中,为了提高每个待识别应用的相似哈希值的计算精度,还可以在将至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段之前,执行以下至少一种操作:
1、对待识别应用的内容进行识别处理;
这里识别处理的主要目的是从待识别应用的内容中尽可能识别出更多的文本类文件,例如可以根据文件后缀来识别文件类型。例如,若文件的后缀为html或txt等,则认为该文件是文本类文件。
其中,若从待识别应用的内容中识别出的文本类文件的数量越多,则上面通过常规哈希算法计算出的哈希值的数量就越多,则对待识别应用的相似哈希值的计算精度的贡献就越多,意味着计算出的待识别应用的相似哈希值的精度就越高,进而可以提高所发现的相似应用的相似性。
2、识别并剔除待识别应用中的重复性文件:
例如,待识别应用中的一些广告文件或者通用sdk文件等都属于重复性文件,这些重复性文件会影响待识别应用的相似哈希值的精度,因此通过识别并将这些重复性文件剔除,采用剩余的文件计算待识别应用的相似哈希值,将有利于提高计算出的相似哈希值的精度,进而提高获取的相似应用的相似度。
3、确定待识别应用是否属于指定框架类的应用,并在确定待识别应用属于指定框架类的应用时,对待识别应用中的指定文件进行预处理;
考虑到一些特定框架类的应用,例如Unity3D框架类的应用或者模拟器类的应用,一般有其自身特性,对于其中一些文件需要进行专门处理,以便提炼出更多信息,这样可以提高相似哈希处理的效果。基于此,预先指定一些特殊框架类,通过判断待识别应用是否属于指定框架类的应用,并在识别出属于指定框架类的应用时,对待识别应用中的指定文件进行预处理,以便于提炼出更多信息,进而提升相似哈希处理的效果。
上述Unity3D框架是一款能够开发出让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。在Unity3D框架类应用中,游戏的资源文件无法直接读取到,隐藏在Unity3D相关文件中,并且相关文件在安装包中被分割为一些小文件,因此需要进行一些预处理,以便获取哈希处理所需的文件。这里的预处理可以是预先将这些小文件拼接,再从中读取出Unity3D的对象,以便于对Unity3D的对象对应的字节进行常规哈希处理。
上述模拟器类应用指将模拟器和某个或某些特定模拟器支持的文件(如Rom文件)封装在一个应用中的应用。两个模拟器类应用的不同一般体现在包含在应用中的模拟器所支持的文件不同。其中,模拟器也是一种应用,这种应用可以运行一些模拟器支持的文件(如Rom文件),这些文件包含了游戏需要的资源,模拟器可以运行这些资源。其中,运行不同的文件,相当于运行不同的游戏。对模拟器类应用来说,只需要提取应用中的模拟器支持的文件(如Rom文件),其余资源文件可以全部舍去。由于模拟器支持的文件(Rom文件)具有特定格式,因此在对这些文件进行哈希处理之前,需要预先解析出文件中的内容,然后在对解析出的内容进行哈希处理。
在获得每个待识别应用的相似哈希值之后,根据每个待识别应用的相似哈希值,判断至少两个待识别应用中是否存在相似应用。
例如,可以将待识别应用的相似哈希值进行比较,若待识别应用的相似哈希值之差小于预设门限,则确定待识别应用相似;反之,确定待识别应用不相似。
又例如,可以根据待识别应用的相似哈希值计算出待识别应用之间的相似度,进而将相似度与预设的门限进行比较,若相似度大于或等于预设的门限,则确认待识别应用相似,反之,确认待识别应用不相似。
本实施例在确定至少两个待识别应用之后,将至少两个待识别应用的内容进行拆分成内容片段,基于拆分出的内容片段识别至少两个待识别应用中是否存在相似应用,达到获取相似应用的目的,由于不是通过应用的名称或包名来发现相似应用,而是根据应用的内容片段来获取相似应用,可以避免因应用的名称或包名发生变化导致获取相似应用失败的情况,有利于提高获取相似应用的成功概率。另外,采用本实施例提供的方法,可以自动进行相似应用的识别,在目前应用数量越多越多的情况下,可以提高获取相似应用的效率。
为便于更加清楚的理解本发明技术方案,下面结合具体应用进行说明:
以爬取一款名称为Speed Racing的应用的相似应用为例,假设这款应用还有很多其它名字,如暴力飙车、亡命威龙、超音速跑车、弹力钢索飞车等。以下给出五个应用,这五个应用的md5检验值已经包含在应用的名称中:
1、亡命威龙_3.3_10.50M_f06984d581e610ff11437a0b82fa74a3.apk
2、超音速跑车_4.2.7_11.38M_cc9c06f023c9360f0891f6de08d6627e.apk
3、弹力钢索飞车_2.9_11.66M_71dee30a6f1b473b8d936369b6639c53.apk
4、暴力飙车_3.3_10.29M_65fcc0717378ee7ed53de85e1c21f319.apk
5、Speed_Racing_3.3_10.11M_bc2c521e1466770268f62408bbb8061f.apk
采用本发明上述实施例提供的方法分别计算出五个应用中每个应用的相似哈希值,根据每个应用的相似哈希值,计算出两两应用之间的相似度。相似度结果如下:
Speed_Racing_3.3_10.11M_bc2c521e1466770268f62408bbb8061f.apk与弹力钢索飞车_2.9_11.66M_71dee30a6f1b473b8d936369b6639c53.apk的相似度为:0.9331689;
Speed_Racing_3.3_10.11M_bc2c521e1466770268f62408bbb8061f.apk与超音速跑车_4.2.7_11.38M_cc9c06f023c9360f0891f6de08d6627e.apk的相似度为:0.94264996;
Speed_Racing_3.3_10.11M_bc2c521e1466770268f62408bbb8061f.apk与亡命威龙_3.3_10.50M_f06984d581e610ff11437a0b82fa74a3.apk的相似度为:0.9648181;
Speed_Racing_3.3_10.11M_bc2c521e1466770268f62408bbb8061f.apk与暴力飙车_3.3_10.29M_65fcc0717378ee7ed53de85e1c21f319.apk的相似度为:0.98085564;
弹力钢索飞车_2.9_11.66M_71dee30a6f1b473b8d936369b6639c53.apk与超音速跑车_4.2.7_11.38M_cc9c06f023c9360f0891f6de08d6627e.apk的相似度为:0.91049594;
弹力钢索飞车_2.9_11.66M_71dee30a6f1b473b8d936369b6639c53.apk与亡命威龙_3.3_10.50M_f06984d581e610ff11437a0b82fa74a3.apk的相似度为:0.9192553;
弹力钢索飞车_2.9_11.66M_71dee30a6f1b473b8d936369b6639c53.apk与暴力飙车_3.3_10.29M_65fcc0717378ee7ed53de85e1c21f319.apk的相似度为:0.93535376;
超音速跑车_4.2.7_11.38M_cc9c06f023c9360f0891f6de08d6627e.apk与亡命威龙_3.3_10.50M_f06984d581e610ff11437a0b82fa74a3.apk的相似度为:0.94790876;
超音速跑车_4.2.7_11.38M_cc9c06f023c9360f0891f6de08d6627e.apk与暴力飙车_3.3_10.29M_65fcc0717378ee7ed53de85e1c21f319.apk的相似度为:0.95238256;
亡命威龙_3.3_10.50M_f06984d581e610ff11437a0b82fa74a3.apk与暴力飙车_3.3_10.29M_65fcc0717378ee7ed53de85e1c21f319.apk的相似度为:0.9825206。
由上述相似度结果可以看出,对于上述五个名称不同但实际内容相似的应用来说,由于采用本发明技术方案计算出的任意两个应用的相似度均大于90%,所以可以确定这些应用具有高度相似性,从而有利于用户成功获取相似应用。对于上述五个应用,若像现有技术那样仅依靠应用的名称进行相似性识别,则会认为这五个应用不存在相似性,从而导致获取相似应用的成功概率较低,而本发明可以提高获取相似应用的成功概率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
图2为本发明一实施例提供的获取相似应用的装置的结构示意图。如图2所示,该装置包括:确定模块21和识别模块22。
确定模块21,用于确定至少两个待识别应用。
识别模块22,用于根据确定模块21所确定的至少两个待识别应用的内容,识别至少两个待识别应用中是否存在相似应用。
在一可选实施方式中,上述每个待识别应用的内容可以是但不限于:待识别应用中的文件。
在一可选实施方式中,识别模块22具体用于:将至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段;根据每个待识别应用的至少一个内容片段,识别至少两个待识别应用中是否存在相似应用。
进一步,识别模块22在用于将至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段时,具体用于:将每个待识别应用的内容划分为文本类文件和二进制类文件;直接将二进制类文件作为一个内容片段,并按照预设的片段粒度,将文本类文件拆分为至少一个内容片段。
进一步,识别模块22在用于根据每个待识别应用的至少一个内容片段,识别至少两个待识别应用中是否存在相似应用时,具体用于:
对每个待识别应用的至少一个内容片段进行相似哈希处理,以获得每个待识别应用的相似哈希值;
根据每个待识别应用的相似哈希值,识别至少两个待识别应用中是否存在相似应用。
进一步,识别模块22在对每个待识别应用的至少一个内容片段进行相似哈希处理,以获得每个待识别应用的相似哈希值用于时,具体用于:
创建一全局数组,全局数组的长度与选定的常规哈希算法所计算出的哈希值的长度相同;
采用常规哈希算法对待识别应用的至少一个内容片段中的每个内容片段进行哈希运算,以获得每个内容片段的哈希值,根据每个内容片段的哈希值更新全局数组;
将更新后的全局数组转换为哈希值,以作为待识别应用的相似哈希值。
上述更新规则为:全局数组中的第i位的数值大于0,将哈希值的第i位的取值置为1,若全局数组中的第i位的数值小于或等于0,将哈希值的第i位的取值置为0,i=0,1,…,(N-1),N是常规哈希算法计算出的哈希值的长度或者是全局数组的长度。
上述转换规则为:若全局数组中的第i位的数值大于0,将哈希值的第i位的取值置为1,若全局数组中的第i位的数值小于或等于0,将哈希值的第i位的取值置为0,i=0,1,…,(N-1),N是常规哈希算法计算出的哈希值的长度或者是全局数组的长度。
在一可选实施方式中,识别模块22还用于:在更新全局数组之前,判断至少一个内容片断的哈希值中是否存在重复出现的哈希值;若判断结果为存在,则确定采用重复出现的哈希值对全局数组进行更新的更新次数,更新次数小于重复出现的哈希值的重复出现次数。
基于上述,识别模块22在用于根据重复出现的内容片段的哈希值更新全局数组时,具体用于:根据更新次数,利用重复出现的哈希值对全局数组进行更新。
在一可选实施方式中,如图3所示,装置还包括:处理模块23。
处理模块23,用于在识别模块22将至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段对之前,执行以下至少一种操作:
对待识别应用的内容进行识别处理;
识别并剔除待识别应用中的重复性文件;
确定待识别应用是否属于指定框架类的应用,并在确定待识别应用属于指定框架类的应用时,对待识别应用中的指定文件进行预处理。
本实施例提供的获取相似应用的装置,在确定至少两个待识别应用之后,根据至少两个待识别应用的内容,识别至少两个待识别应用中是否存在相似应用,达到获取相似应用的目的,本申请不是通过应用的名称或包名来发现相似应用,而是根据应用的内容来获取相似应用,可以避免因应用的名称或包名发生变化导致获取相似应用失败的情况,有利于提高获取相似应用的成功概率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种获取相似应用的方法,其特征在于,包括:
确定至少两个待识别应用;
根据所述至少两个待识别应用的内容,识别所述至少两个待识别应用中是否存在相似应用。
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个待识别应用的内容,识别所述至少两个待识别应用中是否存在相似应用,包括:
将所述至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段;
根据所述每个待识别应用的至少一个内容片段,识别所述至少两个待识别应用中是否存在相似应用。
3.根据权利要求2所述的方法,其特征在于,所述将所述至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段,包括:
将所述每个待识别应用的内容划分为文本类文件和二进制类文件;
直接将所述二进制类文件作为一个内容片段,并按照预设的片段粒度,将所述文本类文件拆分为至少一个内容片段。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述每个待识别应用的至少一个内容片段,识别所述至少两个待识别应用中是否存在相似应用,包括:
对所述每个待识别应用的至少一个内容片段进行相似哈希处理,以获得所述每个待识别应用的相似哈希值;
根据所述每个待识别应用的相似哈希值,识别所述至少两个待识别应用中是否存在相似应用。
5.根据权利要求4所述的方法,其特征在于,所述对所述每个待识别应用的至少一个内容片段进行相似哈希处理,以获得所述每个待识别应用的相似哈希值,包括:
创建一全局数组,所述全局数组的长度与选定的常规哈希算法所计算出的哈希值的长度相同;
采用所述常规哈希算法对所述待识别应用的至少一个内容片段中的每个内容片段进行哈希运算,以获得所述每个内容片段的哈希值,根据所述每个内容片段的哈希值更新所述全局数组;
将更新后的全局数组转换为哈希值,以作为所述待识别应用的相似哈希值。
6.根据权利要求5所述的方法,其特征在于,所述根据所述每个内容片段的哈希值更新所述全局数组之前,还包括:
判断所述至少一个内容片断的哈希值中是否存在重复出现的哈希值;
若判断结果为存在,则确定采用所述重复出现的哈希值对所述全局数组进行更新的更新次数,所述更新次数小于所述重复出现的哈希值的重复出现次数;
所述根据所述重复出现的内容片段的哈希值更新所述全局数组,包括:
根据所述更新次数,利用所述重复出现的哈希值对所述全局数组进行更新。
7.根据权利要求2或3所述的方法,其特征在于,所述将所述至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段之前,还包括以下至少一种操作:
对所述待识别应用的内容进行识别处理;
识别并剔除所述待识别应用中的重复性文件;
确定所述待识别应用是否属于指定框架类的应用,并在确定所述待识别应用属于指定框架类的应用时,对所述待识别应用中的指定文件进行预处理。
8.一种获取相似应用的装置,其特征在于,包括:
确定模块,用于确定至少两个待识别应用;
识别模块,用于根据所述至少两个待识别应用的内容,识别所述至少两个待识别应用中是否存在相似应用。
9.根据权利要求8所述的装置,其特征在于,所述识别模块具体用于:
将所述至少两个待识别应用中每个待识别应用的内容拆分为至少一个内容片段;
根据所述每个待识别应用的至少一个内容片段,识别所述至少两个待识别应用中是否存在相似应用。
10.根据权利要求9所述的装置,其特征在于,所述识别模块具体用于:
将所述每个待识别应用的内容划分为文本类文件和二进制类文件;
直接将所述二进制类文件作为一个内容片段,并按照预设的片段粒度,将所述文本类文件拆分为至少一个内容片段。
11.根据权利要求9或10所述的装置,其特征在于,所述识别模块具体用于:
对所述每个待识别应用的至少一个内容片段进行相似哈希处理,以获得所述每个待识别应用的相似哈希值;
根据所述每个待识别应用的相似哈希值,识别所述至少两个待识别应用中是否存在相似应用。
12.根据权利要求11所述的装置,其特征在于,所述识别模块具体用于:
创建一全局数组,所述全局数组的长度与选定的常规哈希算法所计算出的哈希值的长度相同;
采用所述常规哈希算法对所述待识别应用的至少一个内容片段中的每个内容片段进行哈希运算,以获得所述每个内容片段的哈希值,根据所述每个内容片段的哈希值更新所述全局数组;
将更新后的全局数组转换为哈希值,以作为所述待识别应用的相似哈希值。
13.根据权利要求12所述的装置,其特征在于,所述识别模块还用于:
在更新所述全局数组之前,判断所述至少一个内容片断的哈希值中是否存在重复出现的哈希值;
若判断结果为存在,则确定采用所述重复出现的哈希值对所述全局数组进行更新的更新次数,所述更新次数小于所述重复出现的哈希值的重复出现次数;
所述识别模块在根据所述重复出现的内容片段的哈希值更新所述全局数组时具体用于:根据所述更新次数,利用所述重复出现的哈希值对所述全局数组进行更新。
14.根据权利要求9或10所述的装置,其特征在于,还包括:
处理模块,用于执行以下至少一种操作:
对所述待识别应用的内容进行识别处理;
识别并剔除所述待识别应用中的重复性文件;
确定所述待识别应用是否属于指定框架类的应用,并在确定所述待识别应用属于指定框架类的应用时,对所述待识别应用中的指定文件进行预处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510142687.7A CN104794167B (zh) | 2015-03-27 | 2015-03-27 | 获取相似应用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510142687.7A CN104794167B (zh) | 2015-03-27 | 2015-03-27 | 获取相似应用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794167A true CN104794167A (zh) | 2015-07-22 |
CN104794167B CN104794167B (zh) | 2018-07-24 |
Family
ID=53558959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510142687.7A Active CN104794167B (zh) | 2015-03-27 | 2015-03-27 | 获取相似应用的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794167B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106886602A (zh) * | 2017-03-02 | 2017-06-23 | 上海斐讯数据通信技术有限公司 | 一种应用爬取方法及系统 |
CN109495271A (zh) * | 2018-10-19 | 2019-03-19 | 北京梆梆安全科技有限公司 | 比较apk文件方法、装置、服务器及其存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100180344A1 (en) * | 2009-01-10 | 2010-07-15 | Kaspersky Labs ZAO | Systems and Methods For Malware Classification |
CN103473128A (zh) * | 2013-09-12 | 2013-12-25 | 南京大学 | 一种用于mashup应用推荐的协同过滤方法 |
CN103812950A (zh) * | 2014-03-10 | 2014-05-21 | 厦门美图之家科技有限公司 | 一种从原生应用中获取类似应用的方法 |
CN103984883A (zh) * | 2014-05-21 | 2014-08-13 | 湘潭大学 | 基于类依赖图的Android应用相似性检测方法 |
CN104424402A (zh) * | 2013-08-28 | 2015-03-18 | 卓易畅想(北京)科技有限公司 | 一种用于检测盗版应用程序的方法及装置 |
-
2015
- 2015-03-27 CN CN201510142687.7A patent/CN104794167B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100180344A1 (en) * | 2009-01-10 | 2010-07-15 | Kaspersky Labs ZAO | Systems and Methods For Malware Classification |
CN104424402A (zh) * | 2013-08-28 | 2015-03-18 | 卓易畅想(北京)科技有限公司 | 一种用于检测盗版应用程序的方法及装置 |
CN103473128A (zh) * | 2013-09-12 | 2013-12-25 | 南京大学 | 一种用于mashup应用推荐的协同过滤方法 |
CN103812950A (zh) * | 2014-03-10 | 2014-05-21 | 厦门美图之家科技有限公司 | 一种从原生应用中获取类似应用的方法 |
CN103984883A (zh) * | 2014-05-21 | 2014-08-13 | 湘潭大学 | 基于类依赖图的Android应用相似性检测方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106886602A (zh) * | 2017-03-02 | 2017-06-23 | 上海斐讯数据通信技术有限公司 | 一种应用爬取方法及系统 |
CN109495271A (zh) * | 2018-10-19 | 2019-03-19 | 北京梆梆安全科技有限公司 | 比较apk文件方法、装置、服务器及其存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104794167B (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558646B2 (en) | Cognitive deduplication-aware data placement in large scale storage systems | |
US10176228B2 (en) | Identification and evaluation of lexical answer type conditions in a question to generate correct answers | |
CN104424402B (zh) | 一种用于检测盗版应用程序的方法及装置 | |
EP3005160B1 (en) | Bundle package retrieving | |
US10318883B2 (en) | Identifying optimum times at which to retrain a logistic regression model | |
US9830316B2 (en) | Content availability for natural language processing tasks | |
US20160188569A1 (en) | Generating a Table of Contents for Unformatted Text | |
CN106445643B (zh) | 克隆、升级虚拟机的方法及设备 | |
CN106326386B (zh) | 搜索结果的展示方法和装置 | |
US10417285B2 (en) | Corpus generation based upon document attributes | |
US11182416B2 (en) | Augmentation of a text representation model | |
CN110619213A (zh) | 基于多模型特征的恶意软件识别方法、系统及相关装置 | |
WO2014036923A1 (en) | Method and apparatus for identifying initiation items | |
CN104239045A (zh) | 未知文件的打开方法及装置 | |
CN105808630B (zh) | 一种安卓应用的审核方法及装置 | |
CN104794167A (zh) | 获取相似应用的方法及装置 | |
US20190073198A1 (en) | Multi-flavored software execution from a singular code base | |
US9946765B2 (en) | Building a domain knowledge and term identity using crowd sourcing | |
US20170109354A1 (en) | Answer Scoring by Using Structured Resources to Generate Paraphrases | |
US12014142B2 (en) | Machine learning for training NLP agent | |
US10546247B2 (en) | Switching leader-endorser for classifier decision combination | |
Rechert et al. | Characterization of CD-ROMs for Emulation-Based Access. | |
US9910890B2 (en) | Synthetic events to chain queries against structured data | |
US11334607B2 (en) | Identifying key words within a plurality of documents | |
US11288063B2 (en) | Method and apparatus for assisting in open source usage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100083 Beijing City, Haidian District Xueyuan Road No. 30, large industrial building A block 20 layer 1 to room 3 Applicant after: Beijing Bang Bang Safety Technology Co. Ltd. Address before: 100083 Beijing City, Haidian District Xueyuan Road No. 30, building A, room 605 days. Applicant before: Yangpuweiye Technology Limited |
|
GR01 | Patent grant | ||
GR01 | Patent grant |