一种应用相似度计算方法及装置与流程

文档序号:18923781发布日期:2019-10-19 03:48阅读:227来源:国知局
一种应用相似度计算方法及装置与流程

本发明涉及计算机程序分析技术领域,具体涉及一种应用相似度计算方 法及装置。



背景技术:

随着计算机技术的不断发展,应用程序代码盗版现象越来越普遍。与自 然语言相比,程序语言的语法相对规则,这一特点使应用程序代码剽窃起来 更容易,一般仅通过文本编辑器进行简单的变量替换,添加冗余代码,变换 程序次序等手段,就可以改变应用程序源代码的形式,而不影响源程序的正 常运行。

随着智能手机的普及,手机应用程序的盗版现象也越来越普遍。例如在 Android操作系统中,用户如果需要安装一个新的应用程序,可以去诸如豌 豆荚等应用程序市场选择需要安装的应用程序,但是应用程序市场中的应用 程序数量非常多,准入门槛又低,对于从应用程序市场获得的应用程序安装 包是否为盗版,不能方便的判断。

发明人在实现本发明的过程中发现,现有技术中的方式至少存在下述问 题:在现有技术中,一般是通过将包名相同的应用程序安装包的签名与该应 用程序的官方签名进行比较,若签名一致,则认为该应用程序安装包为正版。 但是,如果盗版应用程序安装包被重新打包,并更换包名,该方法则不能准 确判断应用程序安装包是否为盗版安装包。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分 地解决上述问题的应用相似度计算方法及装置。

根据本发明的一个方面,提供了一种应用相似度计算方法,包括:将第 一应用中包含的资源文件与第二应用中包含的资源文件进行资源相似度比 较,得到资源相似度比较结果;将第一应用中包含的代码文件与第二应用中 包含的代码文件进行代码相似度比较,得到代码相似度比较结果;根据资源 相似度比较结果以及代码相似度比较结果计算第一应用和第二应用之间的相 似度分值。

根据本发明的另一方面,提供了一种应用相似度计算装置,包括:资源 文件比较模块,用于将第一应用中包含的资源文件与第二应用中包含的资源 文件进行资源相似度比较,得到资源相似度比较结果;代码文件比较模块, 用于将第一应用中包含的代码文件与第二应用中包含的代码文件进行代码相 似度比较,得到代码相似度比较结果;相似度分值计算模块,用于根据资源 相似度比较结果以及代码相似度比较结果计算第一应用和第二应用之间的相 似度分值。

根据本发明的应用相似度计算方法及装置,可以通过对应用程序的资源 文件和代码文件进行相似度比较,并综合考虑资源文件相似度比较结果和代 码文件相似度比较结果,通过计算得出应用程序的总体相似度情况,由此解 决了如果盗版应用程序安装包被重新打包,并更换包名,现有技术不能准确 判断应用程序安装包是否为盗版安装包的问题,取得了高效、准确地识别盗 版应用程序安装包的技术效果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技 术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它 目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本 领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的, 而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示 相同的部件。在附图中:

图1是本发明实施例一提供的一种应用相似度计算方法的流程图;

图2是本发明实施例二提供的一种应用相似度计算方法的流程图;

图3是本发明实施例三提供的一种应用相似度计算装置的结构示意图;

图4是本发明实施例四提供的一种应用相似度计算装置的结构示意图;

图5是本发明提供的应用相似度计算方法中文件应用映射表的一种表现 形式;

图6是本发明提供的应用相似度计算方法中预处理步骤的基本流程图;

图7是本发明提供的应用相似度计算方法中资源文件相似度分析步骤的 基本流程图;

图8是本发明提供的应用相似度计算方法中代码文件相似度分析步骤的 基本流程图;

图9是本发明提供的应用相似度计算方法的总体流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示 了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不 应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地 理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

实施例一

图1是本发明实施例一提供的一种应用相似度计算方法的流程图,该方 法可以适用于移动应用或非移动应用。该方法包括:

步骤S110:将第一应用中包含的资源文件与第二应用中包含的资源文件 进行资源相似度比较,得到资源相似度比较结果。

具体地,获取第一应用中包含的所有资源文件和第二应用中包含的所有 资源文件,分别计算每个资源文件的特征值,该特征值可以是MD5值,也 可以是其他能唯一标识资源文件身份的特征值,本发明对此不作具体限定, 本领域技术人员可以灵活设置。之后通过计算出的特征值将第一应用中每一 个资源文件与第二应用中的每一个资源文件进行比较,最后计算第一应用中 与第二应用相同资源文件个数占第一应用中所有资源文件总个数的比例,该 比例即为第一应用资源文件与第二应用资源文件的相似度。例如,假设第一 应用中资源文件个数为A;通过比较后,第一应用中与第二应用相同的资源 文件个数为A1,则资源相似度比较结果为一个比值,即A1/A。

步骤S120:将第一应用中包含的代码文件与第二应用中包含的代码文件 进行代码相似度比较,得到代码相似度比较结果。

步骤S120与步骤S110类似,具体地,获取第一应用中包含的所有代码 文件和第二应用中包含的所有代码文件,并确定每个代码文件中所调用到的 系统函数类型,并统计出第一应用和第二应用分别调用到的系统函数的总类 型数;之后比较第一应用与第二应用分别调用的系统函数的总类型数;最后, 计算第一应用中与第二应用调用相同的系统函数总类型数与第一应用中代码 文件调用的系统函数总类型数的比值。例如,假设第一应用中代码文件调用 到的系统函数总类型数为B;通过比较后,第一应用中与第二应用调用相同 的系统函数总类型数为B1,则代码相似度比较结果也为一个比值,即B1/B。

在其他实施例中,上述步骤中的系统函数总类型数也可以替换成代码文 件调用的系统函数的总个数,还可以替换成代码文件调用的系统函数的类型 数和各个类型的个数。本发明对此不作具体限定,本领域技术人员可以根据 实际情况灵活设定。

步骤S130:根据资源相似度比较结果以及代码相似度比较结果计算第一 应用和第二应用之间的相似度分值。

具体地,根据资源文件和代码文件自身的特性,两种文件在不同应用之 间的重复概率是不同的,因此,为了使最后计算出的应用相似度分值更加科 学和客观,需要为资源相似度比较结果和代码相似度比较结果分别设置权重 值,然后根据资源相似度比较结果和代码相似度比较结果以及分别对应的权 重值,通过预设公式计算应用相似度分值。例如,当设置资源相似度比较结 果的权值为a,代码相似度比较结果的权值为b时,则最终的应用相似度分 值为a*(A1/A)+b*(B1/B)。

综上所述,本发明实施例提供的应用相似度计算方法能够通过对应用程 序的资源文件和代码文件进行相似度比较,并综合考虑资源文件相似度比较 结果和代码文件相似度比较结果,从而通过计算得出应用程序的总体相似度 情况,为高效、准确地识别盗版应用程序安装包提供了可能。

实施例二

图2是本发明实施例二提供的一种应用相似度计算方法的流程图,该方 法可以适用于移动应用或非移动应用。该方法包括:

步骤S210:确定第一应用中包含的各个文件,查询预设的文件应用映射 表,分别判断每个文件是否包含在文件应用映射表中。

若判断结果为是,将与该文件存在映射关系的应用确定为第二应用;若 判断结果为否,在文件应用映射表中添加该文件与第一应用之间的映射关系。

该步骤的主要作用是为了避免将第一应用与所有的其他应用进行相似度 分析,例如,如果取两个完全没有任何关联的应用进行相似度分析,不仅浪 费时间,同时也浪费计算资源。因此,通过步骤S210的初步相似度分析, 可以筛选掉一大部分毫不相关的应用,然后有针对性地将第一应用与筛选出 的第二应用进行两两的相似度分析,提高了分析效率。

其中,文件应用映射表用于保存应用包含的文件与应用的对应关系,文 件与应用的对应关系为一对多关系,即存在多个应用都包含有同一个文件的 可能性。每当需要分析一个第一应用时,则在文件应用映射表中查找第一应 用包含的每一个文件。当某一文件包含在文件应用映射表中时,将表格中与 该文件对应的所有应用确定为第二应用,并将第一应用添加到该文件的对应 关系中;若该文件不包含在文件应用映射表中时,在文件应用映射表中新建 一条记录并添加该文件与第一应用之间的映射关系。

为了方便进一步理解步骤S210的工作流程,图5是保存有文件和应用 MD5值的“文件MD5-应用MD5映射表”,图6是以安卓应用APK以及“文 件MD5-应用MD5映射表”为例的步骤S210的基本流程图,包括:首先, 对需要进行相似度分析的APK进行解压并计算其所有文件(此处需要排除 APK被加固后,被加固厂商额外加入的so文件)的MD5值;其次,用计算 出的所有文件的MD5值依次去查询“文件MD5-应用MD5映射表”,找到 与当前APK有相同文件的所有APK的MD5值,并通过该MD5值确定所有 APK;最后,更新映射表,将当前APK的所有文件的MD5值和当前APK的 MD5值建立映射关系,并存入到“文件MD5-应用MD5映射表”中,使得 映射表包含已进行相似度分析的所有APK及其所包含的文件。

步骤S220:将第一应用中包含的资源文件与第二应用中包含的资源文件 进行资源相似度比较,得到资源相似度比较结果。

由步骤S210可知,一般情况下,第一应用的数量为一个,第二应用的数 量为多个。因此,步骤S220具体为将第一应用中包含的资源文件分别与各 个第二应用中包含的资源文件进行资源相似度比较,分别得到第一应用与各 个第二应用之间的资源相似度比较结果。

资源文件可以分为图片文件和非图片文件,因为两个应用即使没有相似 之处,也可能存在原封不动引用同一个图片文件的概率,同样的,对于两个 没有任何关联的应用而言,引用同一个非图片文件的概率是非常小的,甚至 是几乎不可能的。所以,在比较资源文件时,优选地,将资源文件中的图片 文件和非图片文件分开来比较。还需要注意的是,因为图片文件被引用的概 率高,而非图片文件被引用的概率极低,所以在计算资源文件相似度比较结 果时应该为图片资源相似比较结果和非图片资源相似比较结果设置不同的权 重值。

总的来说就是,首先将第一应用和第二应用中包含的资源文件分别划分 为图片类资源文件和非图片类资源文件;然后将第一应用中包含的图片类资 源文件与第二应用中包含的图片类资源文件进行图片资源相似度比较,得到 图片资源相似度比较结果,将第一应用中包含的非图片类资源文件与第二应 用中包含的非图片类资源文件进行非图片资源相似度比较,得到非图片资源 相似度比较结果;最后,根据预设的图片资源权重值和非图片资源权重值对 图片资源相似度比较结果和非图片资源相似度比较结果进行运算,得到资源 相似度比较结果。

图片资源相似度比较的算法和非图片资源相似度比较的算法相同,具体 算法如下:

假设,第一应用的所有资源文件个数为A;第一应用的所有图片文件个 数为B;第一应用的所有非图片文件个数为C;用于比较的第二应用的所有 资源文件个数为D;用于比较的第二应用的所有图片文件个数为E;用于比 较的第二应用的所有非图片文件个数为F;B与E进行比较后,相同图片文 件的个数为G;C与F进行比较后,相同非图片文件的个数为H;图片资源 权重值为a;非图片资源权重值为b;则图片资源相似度为G/A;非图片资源 相似度为H/A;资源文件相似度为a*(G/A)+b*(H/A)。

为了方便进一步理解步骤S220的工作流程,图7是以安卓应用APK为 例的步骤S220的基本流程图,包括:首先,获取需要进行相似度分析的APK (即上述的第一应用)和筛选过后的APK(即上述的第二应用)的所有资源 文件,解压所有文件并计算所有文件的MD5值;然后,将资源文件划分为 图片文件和非图片文件,并通过文件的MD5值分别进行图片文件相似度比 较和非图片文件相似度比较;最后,根据图片文件和非图片文件的相似度比 较结果以及各自的权重值计算资源文件相似度结果。

步骤S230:将第一应用中包含的代码文件与第二应用中包含的代码文件 进行代码相似度比较,得到代码相似度比较结果。

因为第一应用的数量为一个,第二应用的数量为多个。所以步骤S230 具体为将第一应用中包含的代码文件分别与各个第二应用中包含的代码文件 进行代码相似度比较,分别得到所述第一应用与各个第二应用之间的代码相 似度比较结果。

因为应用的代码文件可以进行代码混淆操作,即将原代码转换成一种功 能上等价,但是难以阅读和理解的代码形式。进行代码混淆操作后,代码中 的各种元素,如变量、方法、类的名字会被改写成无意义的名字。但是无论 是怎么的代码混淆操作,都无法对系统函数进行混淆。所以,本申请实施例 选择通过统计各类系统函数的使用情况来判断代码文件之间的相似性。具体 地,确定第一应用中包含的代码文件中包含的第一系统函数,确定第二应用 中包含的代码文件中包含的第二系统函数;根据第一系统函数与所述第二系 统函数的类型和/或数量得到代码相似度比较结果。

因为代码文件可能被厂商进行过加固操作,所以需要先判断应用的代码 文件是否被加固过,若加固过,则对代码文件进行脱壳处理,并对脱壳处理 后的代码文件进行反编译,以此获得反编译后代码文件中的系统函数。

本发明实施例所采用的代码文件相似度算法为:假设,第一应用所使用 的系统函数的类型(也可以是数量,还可以是类型与数量的结合)的个数为 B;第一应用与第二应用所使用的系统函数中相同的系统函数类型的个数为 B1;则代码相似度为B1/B。

为了方便进一步理解步骤S230的工作流程,图8是以安卓应用APK为 例的步骤S230的基本流程图,包括:首先,判断代码文件(例如classes.dex) 是否被加固,如果没有被加固,则直接对该代码文件进行反编译,如果被加 固,则使用自动脱壳机进行脱壳操作;然后对脱壳后的代码文件进行反编译; 最后,统计系统函数的类型和/或数量,并根据相应算法计算代码相似度。

步骤S240:根据资源相似度比较结果以及代码相似度比较结果计算第一 应用和第二应用之间的相似度分值。

因为第一应用的数量为一个,第二应用的数量可以是多个。所以步骤 S240具体为分别根据第一应用与各个第二应用之间的资源相似度比较结果 以及第一应用与各个第二应用之间的代码相似度比较结果计算第一应用与各 个第二应用之间的相似度分值。

在某些情况下,为了客观地计算出应用之间的相似度,可以根据资源文 件和代码文件对应用相似度产生的影响程度的不同而设置不同的权重值,此 时,步骤S240具体为根据预设的资源权重值和代码权重值对资源相似度比 较结果以及代码相似度比较结果进行运算,得到第一应用和所述第二应用之 间的相似度分值。例如,假设资源相似度为A,其权重值为a;代码相似度 为B,其权重值为b;则该第一应用与某一第二应用的相似度为a*A+b*B。

为了方便更好的理解本发明实施例提供的应用相似度计算方法,图9是 以安卓应用APK为例的应用相似度计算方法的总体流程图,包括:首先,进 行初步相似度比较,筛选出与当前APK(即第一应用)有相似点的其他所有 APK(即第二应用);然后将当前APK与筛选后的所有APK中的每个APK 进行两两相似度比较,包括资源文件相似度比较和代码文件相似度比较;最 后,根据上述资源文件相似度和代码文件相似度计算应用相似度。要说明的 是,虽然以安卓应用为例,但是本领域技术人员能够明了应用也可以是例如 IOS应用的其他移动应用,或者例如桌面应用的非移动应用,本发明实施例 对此不加以限定。

在实际应用中,可以根据该方法来判断一个应用是否为盗版应用,即根 据本方法得到的第一应用和第二应用之间的相似度分值,可以确定第二应用 是否为第一应用的盗版应用。

综上所述,本发明实施例提供的应用相似度计算方法通过对应用程序的 资源文件和代码文件进行相似度比较,并综合考虑资源文件相似度比较结果 和代码文件相似度比较结果,通过计算得出应用程序的总体相似度情况,由 此解决了如果盗版应用程序安装包被重新打包,并更换包名,现有技术不能 准确判断应用程序安装包是否为盗版安装包的问题,取得了高效、准确地识 别盗版应用程序安装包的技术效果。

实施例三

图3是本发明实施例三提供的一种应用相似度计算装置的结构示意图, 该装置可以适用于移动应用或非移动应用。该装置包括:资源文件比较模块 310、代码文件比较模块320和相似度分值计算模块330。

资源文件比较模块310,用于将第一应用中包含的资源文件与第二应用 中包含的资源文件进行资源相似度比较,得到资源相似度比较结果。

具体地,资源文件比较模块310获取第一应用中包含的所有资源文件和 第二应用中包含的所有资源文件,分别计算每个资源文件的特征值,该特征 值可以是MD5值,也可以是其他能唯一标识资源文件身份的特征值,本发 明对此不作具体限定,本领域技术人员可以灵活设置。之后通过计算出的特 征值将第一应用中每一个资源文件与第二应用中的每一个资源文件进行比 较,最后计算第一应用中与第二应用相同资源文件个数占第一应用中所有资 源文件总个数的比例,该比例即为第一应用资源文件与第二应用资源文件的 相似度。例如,假设第一应用中资源文件个数为A;通过比较后,第一应用 中与第二应用相同的资源文件个数为A1,则资源相似度比较结果为一个比 值,即A1/A。

代码文件比较模块320,用于将第一应用中包含的代码文件与第二应用 中包含的代码文件进行代码相似度比较,得到代码相似度比较结果。

代码文件比较模块320的工作流程与资源文件比较模块310类似,具体 地,代码文件比较模块320获取第一应用中包含的所有代码文件和第二应用 中包含的所有代码文件,并确定每个代码文件中所调用到的系统函数类型, 并统计出第一应用和第二应用分别调用到的系统函数的总类型数;之后比较 第一应用与第二应用分别调用的系统函数的总类型数;最后,计算第一应用 中与第二应用调用相同的系统函数总类型数与第一应用中代码文件调用的系 统函数总类型数的比值。假设第一应用中代码文件调用到的系统函数总类型 数为B;通过比较后,第一应用中与第二应用调用相同的系统函数总类型数 为B1,则代码相似度比较结果也为一个比值,即B1/B。

在其他实施例中,上述算法中的系统函数总类型数也可以替换成代码文 件调用的系统函数的总个数,还可以替换成代码文件调用的系统函数的类型 数和各个类型的个数。本发明对此不作具体限定,本领域技术人员可以根据 实际情况灵活设定。

相似度分值计算模块330,用于根据资源相似度比较结果以及代码相似 度比较结果计算第一应用和第二应用之间的相似度分值。

具体地,根据资源文件和代码文件自身的特性,两种文件在不同应用之 间的重复概率是不同的,因此,相似度分值计算模块330为了使最后计算出 的应用相似度分值更加科学和客观,相似度分值计算模块330需要为资源相 似度比较结果和代码相似度比较结果分别设置权重值,然后根据资源相似度 比较结果和代码相似度比较结果以及分别对应的权重值,通过预设公式计算 应用相似度分值。例如,当设置资源相似度比较结果的权值为a,代码相似 度比较结果的权值为b时,则最终的应用相似度分值为a*(A1/A)+b*(B1/B)。

上述各个模块的具体工作原理可参照方法实施例中相应步骤的描述,此 处不再赘述。

综上所述,本发明实施例提供的应用相似度计算装置能够通过对应用程 序的资源文件和代码文件进行相似度比较,并综合考虑资源文件相似度比较 结果和代码文件相似度比较结果,从而通过计算得出应用程序的总体相似度 情况,为高效、准确地识别盗版应用程序安装包提供了可能。

实施例四

图4是本发明实施例四提供的一种应用相似度计算装置的结构示意图, 该装置可以适用于移动应用或非移动应用。该装置包括:预处理模块410、 资源文件比较模块420、代码文件比较模块430、相似度分值计算模块440 和盗版判断模块450。其中,资源文件比较模块420进一步包括:分类子模 块421、图片文件相似度比较子模块422、非图片文件相似度比较子模块423 和资源文件相似度计算子模块424;代码文件比较模块430进一步包括:确 定子模块431和代码文件相似度计算子模块432。

预处理模块410,用于确定第一应用中包含的各个文件,查询预设的文 件应用映射表,分别判断每个文件是否包含在文件应用映射表中。

当判断结果为是时,将与该文件存在映射关系的应用确定为第二应用; 当判断结果为否时,在文件应用映射表中添加该文件与第一应用之间的映射 关系。

该模块的主要作用是为了避免将第一应用与所有的其他应用进行相似度 分析,例如,如果取两个完全没有任何关联的应用进行相似度分析,不仅浪 费时间,同时也浪费计算资源。因此,通过预处理模块410的初步相似度分 析,可以筛选掉一大部分毫不相关的应用,然后有针对性地将第一应用与筛 选后的第二应用进行两两的相似度分析,提高了分析效率。

其中,文件应用映射表用于保存应用包含的文件与应用的对应关系,文 件与应用的对应关系为一对多关系,即存在多个应用都包含有同一个文件的 可能性。每当需要分析一个第一应用时,则在文件应用映射表中查找第一应 用包含的每一个文件。当某一文件包含在文件应用映射表中时,将表格中与 该文件对应的所有应用确定为第二应用,并将第一应用添加到该文件的对应 关系中;若该文件不包含在文件应用映射表中时,在文件应用映射表中新建 一条记录并添加该文件与第一应用之间的映射关系。

资源文件比较模块420,用于将第一应用中包含的资源文件与第二应用 中包含的资源文件进行资源相似度比较,得到资源相似度比较结果。

一般情况下,第一应用的数量为一个,第二应用的数量为多个。因此, 资源文件比较模块420具体用于将第一应用中包含的资源文件分别与各个第 二应用中包含的资源文件进行资源相似度比较,分别得到第一应用与各个第 二应用之间的资源相似度比较结果。

因为资源文件可以分为图片文件和非图片文件,因此,资源文件比较模 块420进一步包括:

分类子模块421,用于将第一应用中包含的资源文件划分为图片类资源 文件和非图片类资源文件,将第二应用中包含的资源文件划分为图片类资源 文件和非图片类资源文件;

图片文件相似度比较子模块422,用于将第一应用中包含的图片类资源 文件与第二应用中包含的图片类资源文件进行图片资源相似度比较,得到图 片资源相似度比较结果;

非图片文件相似度比较子模块423,用于将第一应用中包含的非图片类 资源文件与第二应用中包含的非图片类资源文件进行非图片资源相似度比 较,得到非图片资源相似度比较结果;

资源文件相似度计算子模块424,用于根据预设的图片资源权重值和非 图片资源权重值对图片资源相似度比较结果和非图片资源相似度比较结果进 行运算,得到资源相似度比较结果。

资源文件比较模块420所采用的各种算法与方法实施例中相应步骤所采 用的算法一致,此处不再赘述。

代码文件比较模块430,用于将第一应用中包含的代码文件与第二应用 中包含的代码文件进行代码相似度比较,得到代码相似度比较结果。

因为第一应用的数量为一个,第二应用的数量为多个。所以代码文件比 较模块430具体用于将第一应用中包含的代码文件分别与各个第二应用中包 含的代码文件进行代码相似度比较,分别得到所述第一应用与各个第二应用 之间的代码相似度比较结果。

参照本发明方法实施例的描述,本发明提供的装置也采用系统函数的使 用情况来计算代码相似度,因此,代码文件比较模块430进一步包括:确定 子模块431,用于确定第一应用中包含的代码文件中包含的第一系统函数, 确定第二应用中包含的代码文件中包含的第二系统函数;代码相似度计算子 模块432,用于根据第一系统函数与第二系统函数的类型和/或数量得到代码 相似度比较结果。

因为代码文件可能被厂商进行过加固操作,所以需要先判断应用的代码 文件是否被加固过,若加固过,则对代码文件进行脱壳处理,并对脱壳处理 后的代码文件进行反编译,以此获得反编译后代码文件中的系统函数。因此, 确定子模块431进一步用于判断第一应用中包含的代码文件是否加固,若判 断结果为是,则对第一应用中包含的代码文件执行脱壳处理,并对脱壳处理 后的代码文件进行反编译,以获取第一应用中包含的代码文件中包含的第一 系统函数;判断第二应用中包含的代码文件是否加固,若判断结果为是,则 对第二应用中包含的代码文件执行脱壳处理,并对脱壳处理后的代码文件进 行反编译,以获取第二应用中包含的代码文件中包含的第二系统函数。

代码文件比较模块430所采用的代码文件相似度算法与本发明方法实施 例中所采用的算法一致,此处不再赘述。

相似度分值计算模块440,用于根据资源相似度比较结果以及代码相似 度比较结果计算第一应用和第二应用之间的相似度分值。

因为第一应用的数量为一个,第二应用的数量为多个。所以相似度分值 计算模块440具体用于分别根据第一应用与各个第二应用之间的资源相似度 比较结果以及第一应用与各个第二应用之间的代码相似度比较结果计算第一 应用与各个第二应用之间的相似度分值。

在某些情况下,为了客观地计算出应用之间的相似度,可以根据资源文 件和代码文件对应用相似度产生的影响程度的不同而设置不同的权重值,此 时,相似度分值计算模块440具体用于根据预设的资源权重值和代码权重值 对资源相似度比较结果以及代码相似度比较结果进行运算,得到第一应用和 第二应用之间的相似度分值。

相似度分值计算模块440所采用的代码文件相似度算法与本发明方法实 施例中所采用的算法一致,此处不再赘述。

在实际应用中,本装置还可以包括盗版判断模块450,用于根据第一应 用和第二应用之间的相似度分值,确定第二应用是否为第一应用的盗版应用。

上述各个模块的具体工作原理可参照方法实施例中相应步骤的描述,此 处不再赘述。要说明的是,本领域技术人员能够明了应用可以是例如IOS应 用或安卓应用的移动应用,或者例如桌面应用的非移动应用,本发明实施例 对此不加以限定。

综上所述,本发明实施例提供的应用相似度计算装置通过对应用程序的 资源文件和代码文件进行相似度比较,并综合考虑资源文件相似度比较结果 和代码文件相似度比较结果,通过计算得出应用程序的总体相似度情况,由 此解决了如果盗版应用程序安装包被重新打包,并更换包名,现有技术不能 准确判断应用程序安装包是否为盗版安装包的问题,取得了高效、准确地识 别盗版应用程序安装包的技术效果。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明 的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根 据发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修 改。因此,本发明的范围应该被理解和认定为覆盖了所有这些其他变型或修 改。

本领域技术人员应当理解,本发明的实施方式可以实现为一种系统、装 置、设备、方法或计算机程序产品。此外,本发明也不针对任何特定编程语 言,应当明白,可以利用各种编程语言实现本发明描述的内容,并且上面对 特定语言所做的描述是为了披露本发明的最佳实施方式。

需要注意的是,尽管在上面的说明中详细描述了应用相似度计算装置的 若干模块,但是这种划分仅仅是示例性的,并非是强制性的。本领域的技术 人员可以理解,实际上,可以对实施例中的模块进行自适应性地改变,将实 施例中的多个模块组合成一个模块,也可将一个模块划分成多个模块。

此外,尽管在附图中以特定顺序描述了本发明实施操作,但是,这并非 要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示 的操作才能实现期望的结果。可以省略某些步骤,将多个步骤合并为一个步 骤执行,或者将一个步骤分成多个步骤执行。

综上所述,应用本发明所述的应用相似度计算方法及装置通过对应用程 序的资源文件和代码文件进行相似度比较,并综合考虑资源文件相似度比较 结果和代码文件相似度比较结果,通过计算得出应用程序的总体相似度情况, 由此解决了如果盗版应用程序安装包被重新打包,并更换包名,现有技术不 能准确判断应用程序安装包是否为盗版安装包的问题,取得了高效、准确地 识别盗版应用程序安装包的技术效果。

以上对本发明的方法和具体实施方法进行了详细的介绍,并给出了相应 的实施例。当然,除上述实施例外,本发明还可以有其它实施方式,凡采用 等同替换或等效变换形成的技术方案,均落在本发明所要保护的范围之内。

本发明公开了:A1、一种应用相似度计算方法,其中,包括:

将第一应用中包含的资源文件与第二应用中包含的资源文件进行资源相 似度比较,得到资源相似度比较结果;

将第一应用中包含的代码文件与第二应用中包含的代码文件进行代码相 似度比较,得到代码相似度比较结果;

根据所述资源相似度比较结果以及所述代码相似度比较结果计算所述第 一应用和所述第二应用之间的相似度分值。

A2、根据A1所述的方法,其中,所述第一应用的数量为一个,所述第 二应用的数量为多个,则所述将第一应用中包含的资源文件与第二应用中包 含的资源文件进行资源相似度比较,得到资源相似度比较结果的步骤具体包 括:将所述第一应用中包含的资源文件分别与各个第二应用中包含的资源文 件进行资源相似度比较,分别得到所述第一应用与各个第二应用之间的资源 相似度比较结果;

所述将第一应用中包含的代码文件与第二应用中包含的代码文件进行代 码相似度比较,得到代码相似度比较结果的步骤具体包括:将所述第一应用 中包含的代码文件分别与各个第二应用中包含的代码文件进行代码相似度比 较,分别得到所述第一应用与各个第二应用之间的代码相似度比较结果;

所述根据所述资源相似度比较结果以及所述代码相似度比较结果计算所 述第一应用和所述第二应用之间的相似度分值的步骤具体包括:分别根据所 述第一应用与各个第二应用之间的资源相似度比较结果以及所述第一应用与 各个第二应用之间的代码相似度比较结果计算所述第一应用与各个第二应用 之间的相似度分值。

A3、根据A2所述的方法,其中,所述方法执行之前,进一步包括:

确定所述第一应用中包含的各个文件,查询预设的文件应用映射表,分 别判断每个文件是否包含在所述文件应用映射表中,若判断结果为是,将与 该文件存在映射关系的应用确定为第二应用;若判断结果为否,在所述文件 应用映射表中添加该文件与所述第一应用之间的映射关系。

A4、根据A1-A3任一所述的方法,其中,所述将第一应用中包含的资源 文件与第二应用中包含的资源文件进行资源相似度比较,得到资源相似度比 较结果的步骤具体包括:

将所述第一应用中包含的资源文件划分为图片类资源文件和非图片类资 源文件,将所述第二应用中包含的资源文件划分为图片类资源文件和非图片 类资源文件;

将所述第一应用中包含的图片类资源文件与所述第二应用中包含的图片 类资源文件进行图片资源相似度比较,得到图片资源相似度比较结果;

将所述第一应用中包含的非图片类资源文件与所述第二应用中包含的非 图片类资源文件进行非图片资源相似度比较,得到非图片资源相似度比较结 果;

根据预设的图片资源权重值和非图片资源权重值对所述图片资源相似度 比较结果和所述非图片资源相似度比较结果进行运算,得到所述资源相似度 比较结果。

A5、根据A1-A4任一所述的方法,其中,所述将第一应用中包含的代码 文件与第二应用中包含的代码文件进行代码相似度比较,得到代码相似度比 较结果的步骤具体包括:

确定所述第一应用中包含的代码文件中包含的第一系统函数,确定所述 第二应用中包含的代码文件中包含的第二系统函数;

根据所述第一系统函数与所述第二系统函数的类型和/或数量得到所述 代码相似度比较结果。

A6、根据A5所述的方法,其中,所述确定所述第一应用中包含的代码 文件中包含的第一系统函数的步骤具体包括:判断所述第一应用中包含的代 码文件是否加固,若判断结果为是,则对所述第一应用中包含的代码文件执 行脱壳处理,并对脱壳处理后的代码文件进行反编译,以获取所述第一应用 中包含的代码文件中包含的第一系统函数;

所述确定所述第二应用中包含的代码文件中包含的第二系统函数的步骤 具体包括:判断所述第二应用中包含的代码文件是否加固,若判断结果为是, 则对所述第二应用中包含的代码文件执行脱壳处理,并对脱壳处理后的代码 文件进行反编译,以获取所述第二应用中包含的代码文件中包含的第二系统 函数。

A7、根据A1-A6任一所述的方法,其中,所述根据所述资源相似度比较 结果以及所述代码相似度比较结果计算所述第一应用和所述第二应用之间的 相似度分值的步骤具体包括:

根据预设的资源权重值和代码权重值对所述资源相似度比较结果以及所 述代码相似度比较结果进行运算,得到所述第一应用和所述第二应用之间的 相似度分值。

A8、根据A1-A7任一所述的方法,其中,所述根据所述资源相似度比较 结果以及所述代码相似度比较结果计算所述第一应用和所述第二应用之间的 相似度分值的步骤之后,进一步包括步骤:

根据所述第一应用和所述第二应用之间的相似度分值,确定所述第二应 用是否为所述第一应用的盗版应用。

A9、根据A1-A8任一所述的方法,其中,所述应用包括:移动应用,或 非移动应用。

本发明还公开了:B10、一种应用相似度计算装置,其中,包括:

资源文件比较模块,用于将第一应用中包含的资源文件与第二应用中包 含的资源文件进行资源相似度比较,得到资源相似度比较结果;

代码文件比较模块,用于将第一应用中包含的代码文件与第二应用中包 含的代码文件进行代码相似度比较,得到代码相似度比较结果;

相似度分值计算模块,用于根据所述资源相似度比较结果以及所述代码 相似度比较结果计算所述第一应用和所述第二应用之间的相似度分值。

B11、根据B10所述的装置,其中,所述第一应用的数量为一个,所述 第二应用的数量为多个,则所述资源文件比较模块具体用于:将所述第一应 用中包含的资源文件分别与各个第二应用中包含的资源文件进行资源相似度 比较,分别得到所述第一应用与各个第二应用之间的资源相似度比较结果;

所述代码文件比较模块具体用于:将所述第一应用中包含的代码文件分 别与各个第二应用中包含的代码文件进行代码相似度比较,分别得到所述第 一应用与各个第二应用之间的代码相似度比较结果;

所述相似度分值计算模块具体用于:分别根据所述第一应用与各个第二 应用之间的资源相似度比较结果以及所述第一应用与各个第二应用之间的代 码相似度比较结果计算所述第一应用与各个第二应用之间的相似度分值。

B12、根据B11所述的装置,其中,所述装置进一步包括:

预处理模块,用于确定所述第一应用中包含的各个文件,查询预设的文 件应用映射表,分别判断每个文件是否包含在所述文件应用映射表中,若判 断结果为是,将与该文件存在映射关系的应用确定为第二应用;若判断结果 为否,在所述文件应用映射表中添加该文件与所述第一应用之间的映射关系。

B13、根据B10-B12任一所述的装置,其中,所述资源文件比较模块具 体包括:

分类子模块,用于将所述第一应用中包含的资源文件划分为图片类资源 文件和非图片类资源文件,将所述第二应用中包含的资源文件划分为图片类 资源文件和非图片类资源文件;

图片文件相似度比较子模块,用于将所述第一应用中包含的图片类资源 文件与所述第二应用中包含的图片类资源文件进行图片资源相似度比较,得 到图片资源相似度比较结果;

非图片文件相似度比较子模块,用于将所述第一应用中包含的非图片类 资源文件与所述第二应用中包含的非图片类资源文件进行非图片资源相似度 比较,得到非图片资源相似度比较结果;

资源文件相似度计算子模块,用于根据预设的图片资源权重值和非图片 资源权重值对所述图片资源相似度比较结果和所述非图片资源相似度比较结 果进行运算,得到所述资源相似度比较结果。

B14、根据B10-B13任一所述的装置,其中,所述代码文件比较模块具 体包括:

确定子模块,用于确定所述第一应用中包含的代码文件中包含的第一系 统函数,确定所述第二应用中包含的代码文件中包含的第二系统函数;

代码文件相似度计算子模块,用于根据所述第一系统函数与所述第二系 统函数的类型和/或数量得到所述代码相似度比较结果。

B15、根据B14所述的装置,其中,所述确定子模块具体用于:

判断所述第一应用中包含的代码文件是否加固,若判断结果为是,则对 所述第一应用中包含的代码文件执行脱壳处理,并对脱壳处理后的代码文件 进行反编译,以获取所述第一应用中包含的代码文件中包含的第一系统函数;

判断所述第二应用中包含的代码文件是否加固,若判断结果为是,则对 所述第二应用中包含的代码文件执行脱壳处理,并对脱壳处理后的代码文件 进行反编译,以获取所述第二应用中包含的代码文件中包含的第二系统函数。

B16、根据B10-B15任一所述的装置,其中,所述相似度分值计算模块 具体用于:

根据预设的资源权重值和代码权重值对所述资源相似度比较结果以及所 述代码相似度比较结果进行运算,得到所述第一应用和所述第二应用之间的 相似度分值。

B17、根据B10-B16任一所述的装置,其中,所述装置进一步包括:

盗版判断模块,用于根据所述第一应用和所述第二应用之间的相似度分 值,确定所述第二应用是否为所述第一应用的盗版应用。

B18、根据B10-B17任一所述的装置,其中,所述应用包括:移动应用, 或非移动应用。

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