著录项信息
专利名称 | 利用数字水印识别应用程序是否是正版的方法及系统 |
申请号 | CN201410306828.X | 申请日期 | 2014-06-30 |
法律状态 | 授权 | 申报国家 | 暂无 |
公开/公告日 | 2016-01-06 | 公开/公告号 | CN105224833A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/16 | IPC分类号 | G;0;6;F;2;1;/;1;6查看分类表>
|
申请人 | 北京金山安全软件有限公司 | 申请人地址 | 北京市海淀区小营西路33号二层东区
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京金山安全软件有限公司 | 当前权利人 | 北京金山安全软件有限公司 |
发明人 | 舒鑫;张楠;陈勇 |
代理机构 | 北京市广友专利事务所有限责任公司 | 代理人 | 祁献民 |
摘要
本发明实施例公开一种利用数字水印识别应用程序是否是正版的方法及系统,能够方便地确定应用程序是否是正版。所述方法包括:从待识别的应用程序的可执行文件中提取第一数字水印;对所述可执行文件使用两种先反编译后编译的算法,分别生成与所述可执行文件的文件格式相同的第一编译文件和第二编译文件,从第一编译文件和第二编译文件中分别提取第二数字水印和第三数字水印;分别获取第一数字水印与第二数字水印、第三数字水印的相似度;若第一数字水印与第三数字水印的相似度大于第一数字水印与第二数字水印的相似度,则确定出待识别的应用程序是正版,否则,则确定出待识别的应用程序为非正版。本发明适用于识别应用程序是否是正版的场合。
1.一种利用数字水印识别应用程序是否是正版的方法,其特征在于,包括:
获取待识别的应用程序的可执行文件,从所述可执行文件中提取第一数字水印;
对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,从所述第一编译文件中提取第二数字水印;其中,所述第二数字水印与所述第一数字水印属于相同类别的数字水印;
对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,从所述第二编译文件中提取第三数字水印;其中,所述第三数字水印与所述第一数字水印属于相同类别的数字水印;并且,所述另外一种先反编译后编译的算法中,反编译后生成的文件的格式,与编译生成所述待识别的应用程序所对应的正版应用程序的可执行文件的过程中所生成的相应文件的文件格式相同;
获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度;
将所述第一数字水印与第二数字水印的相似度与所述第一数字水印与第三数字水印的相似度进行比较;
若所述第一数字水印与第三数字水印的相似度大于所述第一数字水印与第二数字水印的相似度,则确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版。
2.根据权利要求1所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,包括:
对所述可执行文件使用第一反编译算法进行反编译生成第一反编译文件,对所述第一反编译文件使用第一编译算法进行编译生成与所述可执行文件的文件格式相同的第一编译文件。
3.根据权利要求1所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,包括:
对所述可执行文件使用第二反编译算法进行反编译生成第二反编译文件,对所述第二反编译文件使用第二编译算法进行编译生成与所述可执行文件的文件格式相同的第二编译文件。
4.根据权利要求1-3任一项所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述应用程序是应用于安卓操作系统的应用程序;
其中,所述获取待识别的应用程序的可执行文件,包括:
获取待识别的应用程序中的可执行文件dex文件。
5.根据权利要求4所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述第一反编译文件的文件格式为smali格式,所述第二反编译文件的文件格式为class格式。
6.根据权利要求5所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述第一反编译算法为baksmali算法,所述第一编译算法为smali算法。
7.根据权利要求5所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述第二反编译算法为dex2jar算法,所述第二编译算法为dx算法。
8.根据权利要求1-3、5-7任一项所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述数字水印包括:类的排序。
9.根据权利要求1-3、5-7任一项所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度,包括:
通过编辑距离算法获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度。
10.根据权利要求1所述的利用数字水印识别应用程序是否是正版的方法,其特征在于,所述对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,包括:
对所述可执行文件模拟使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件;和/或
所述对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,包括:
对所述可执行文件模拟使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件。
11.一种利用数字水印识别应用程序是否是正版的系统,其特征在于,包括:
第一数字水印提取单元,用于从待识别的应用程序的可执行文件中提取第一数字水印;
第二数字水印提取单元,用于对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,从所述第一编译文件中提取第二数字水印;其中,所述第二数字水印与所述第一数字水印属于相同类别的数字水印;
第三数字水印提取单元,用于对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,从所述第二编译文件中提取第三数字水印;其中,所述第三数字水印与所述第一数字水印属于相同类别的数字水印;并且,所述另外一种先反编译后编译的算法中,反编译后生成的文件的格式,与编译生成所述待识别的应用程序所对应的正版应用程序的可执行文件的过程中所生成的相应文件的文件格式相同;
相似度提取单元,用于获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度;
比较单元,用于将所述第一数字水印与第二数字水印的相似度与所述第一数字水印与第三数字水印的相似度进行比较;
确定单元,用于若所述第一数字水印与第三数字水印的相似度大于所述第一数字水印与第二数字水印的相似度,则确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版。
12.根据权利要求11所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述第二数字水印提取单元包括:
第一反编译子单元,用于对所述可执行文件使用第一反编译算法进行反编译生成第一反编译文件;
第一编译子单元,用于对所述第一反编译文件使用第一编译算法进行编译生成与所述可执行文件的文件格式相同的第一编译文件;
第二数字水印提取子单元,用于从所述第一编译文件中提取第二数字水印。
13.根据权利要求11所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述第三数字水印提取单元,包括:
第二反编译子单元,用于对所述可执行文件使用第二反编译算法进行反编译生成第二反编译文件;
第二编译子单元,用于对所述第二反编译文件使用第二编译算法进行编译生成与所述可执行文件的文件格式相同的第二编译文件;
第三数字水印提取子单元,用于从所述第二编译文件中提取第三数字水印。
14.根据权利要求11-13任一项所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述应用程序是应用于安卓操作系统的应用程序;
其中,所述第一数字水印提取单元,用于从待识别的应用程序的可执行文件dex文件中提取第一数字水印。
15.根据权利要求14所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述第一反编译文件的文件格式为smali格式,所述第二反编译文件的文件格式为class格式。
16.根据权利要求15所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述第一反编译算法为baksmali算法,所述第一编译算法为smali算法。
17.根据权利要求15所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述第二反编译算法为dex2jar算法,所述第二编译算法为dx算法。
18.根据权利要求11-13、15-17任一项所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述数字水印包括:类的排序。
19.根据权利要求11-13、15-17任一项所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,所述相似度提取单元,用于通过编辑距离算法获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度。
20.根据权利要求11所述的利用数字水印识别应用程序是否是正版的系统,其特征在于,
第一模拟单元,用于对所述可执行文件模拟使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件;和/或
第二模拟单元,用于对所述可执行文件模拟使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件。
利用数字水印识别应用程序是否是正版的方法及系统\n技术领域\n[0001] 本发明涉及移动设备应用技术领域,尤其涉及一种利用数字水印识别应用程序是否是正版的方法及系统。\n背景技术\n[0002] 随着网络的普及,为满足用户不同需求的应用程序大量涌现,但随之出现的非正版应用程序却影响了应用程序市场秩序。\n[0003] 为了能够识别出应用程序是否是正版,现有技术一般通过将要识别的应用程序与正版应用程序进行比对来判断,或者通过将要识别的应用程序的签名与正版应用程序的签名进行比对来判断,如果相同,则为正版,则否为非正版。但是现有技术中为了识别应用程序是否是正版,需得通过应用程序对应的正版应用程序来判断,比较不方便,比如当没有正版应用程序时就无法确定另一个应用程序是否是正版应用程序。\n发明内容\n[0004] 有鉴于此,本发明实施例提供一种利用数字水印识别应用程序是否是正版的方法及系统,能够方便地识别应用程序是否是正版。\n[0005] 为达到上述目的,本发明的实施例采用如下技术方案:\n[0006] 一方面,本发明实施例提供一种利用数字水印识别应用程序是否是正版的方法,包括:\n[0007] 获取待识别的应用程序的可执行文件,从所述可执行文件中提取第一数字水印;\n[0008] 对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,从所述第一编译文件中提取第二数字水印;其中,所述第二数字水印与所述第一数字水印属于相同类别的数字水印;\n[0009] 对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,从所述第二编译文件中提取第三数字水印;其中,所述第三数字水印与所述第一数字水印属于相同类别的数字水印;并且,所述另外一种先反编译后编译的算法中,反编译后生成的文件的格式,与编译生成所述待识别的应用程序所对应的正版应用程序的可执行文件的过程中所生成的相应文件的文件格式相同;\n[0010] 获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度;\n[0011] 将所述第一数字水印与第二数字水印的相似度与所述第一数字水印与第三数字水印的相似度进行比较;\n[0012] 若所述第一数字水印与第三数字水印的相似度大于所述第一数字水印与第二数字水印的相似度,则确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版。\n[0013] 本发明实施例提供的利用数字水印识别应用程序是否是正版的方法,若第一数字水印与第三数字水印的相似度大于第一数字水印与第二数字水印的相似度,则说明编译生成待识别的应用程序的可执行文件的过程,与编译生成待识别的应用程序对应的正版应用程序的可执行文件的过程更相似,由此可确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版;这样,在没有正版应用程序做比对的情况下,也能够方便地识别待识别的应用程序是否是正版。\n[0014] 另一方面,本发明实施例提供一种利用数字水印识别应用程序是否是正版的系统,包括:\n[0015] 第一数字水印提取单元,用于获取待识别的应用程序的可执行文件,从所述可执行文件中提取第一数字水印;\n[0016] 第二数字水印提取单元,用于对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,从所述第一编译文件中提取第二数字水印;其中,所述第二数字水印与所述第一数字水印属于相同类别的数字水印;\n[0017] 第三数字水印提取单元,用于对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,从所述第二编译文件中提取第三数字水印;其中,所述第三数字水印与所述第一数字水印属于相同类别的数字水印;并且,所述另外一种先反编译后编译的算法中,反编译后生成的文件的格式,与编译生成所述待识别的应用程序所对应的正版应用程序的可执行文件的过程中所生成的相应文件的文件格式相同;\n[0018] 相似度提取单元,用于获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度;\n[0019] 比较单元,用于将所述第一数字水印与第二数字水印的相似度与所述第一数字水印与第三数字水印的相似度进行比较;\n[0020] 确定单元,用于若所述第一数字水印与第三数字水印的相似度大于所述第一数字水印与第二数字水印的相似度,则确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版。\n[0021] 本发明实施例提供的利用数字水印识别应用程序是否是正版的系统,若第一数字水印与第三数字水印的相似度大于第一数字水印与第二数字水印的相似度,则说明编译生成待识别的应用程序的可执行文件的过程,与编译生成待识别的应用程序对应的正版应用程序的可执行文件的过程更相似,由此可确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版;这样,在没有正版应用程序做比对的情况下,也能够方便地识别待识别的应用程序是否是正版。\n附图说明\n[0022] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。\n[0023] 图1为本发明一种利用数字水印识别应用程序是否是正版的方法一实施例的流程示意图;\n[0024] 图2为本发明一种利用数字水印识别应用程序是否是正版的系统一实施例的方框结构示意图;\n[0025] 图3为图2中第二数字水印提取单元一实施例的方框结构示意图;\n[0026] 图4为图2中第三数字水印提取单元一实施例的方框结构示意图。\n具体实施方式\n[0027] 下面结合附图对本发明实施例一种利用数字水印识别应用程序是否是正版的方法及系统进行详细描述。\n[0028] 应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。\n[0029] 参看图1,本发明的实施例提供一种利用数字水印识别应用程序是否是正版的方法,包括:\n[0030] S1、获取待识别的应用程序的可执行文件,从所述可执行文件中提取第一数字水印;\n[0031] S2、对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,从所述第一编译文件中提取第二数字水印;其中,所述第二数字水印与所述第一数字水印属于相同类别的数字水印;\n[0032] S3、对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,从所述第二编译文件中提取第三数字水印;其中,所述第三数字水印与所述第一数字水印属于相同类别的数字水印;并且,所述另外一种先反编译后编译的算法中,反编译后生成的文件的格式,与编译生成所述待识别的应用程序所对应的正版应用程序的可执行文件的过程中所生成的相应文件的文件格式相同;\n[0033] S4、获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度;\n[0034] S5、将所述第一数字水印与第二数字水印的相似度与所述第一数字水印与第三数字水印的相似度进行比较;\n[0035] S6、若所述第一数字水印与第三数字水印的相似度大于所述第一数字水印与第二数字水印的相似度,则确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版。\n[0036] 本实施例中,待识别的应用程序运行的系统环境可以是安卓系统,也可以是其它操作系统,本发明对此不作限定。\n[0037] 本发明实施例提供的利用数字水印识别应用程序是否是正版的方法,若第一数字水印与第三数字水印的相似度大于第一数字水印与第二数字水印的相似度,则说明编译生成待识别的应用程序的可执行文件的过程,与编译生成待识别的应用程序对应的正版应用程序的可执行文件的过程更相似,由此可确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版;这样,在没有正版应用程序做比对的情况下,也能够方便地识别待识别的应用程序是否是正版。\n[0038] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,包括:\n[0039] 对所述可执行文件使用第一反编译算法进行反编译生成第一反编译文件,对所述第一反编译文件使用第一编译算法进行编译生成与所述可执行文件的文件格式相同的第一编译文件。\n[0040] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,包括:\n[0041] 对所述可执行文件使用第二反编译算法进行反编译生成第二反编译文件,对所述第二反编译文件使用第二编译算法进行编译生成与所述可执行文件的文件格式相同的第二编译文件。\n[0042] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述应用程序是应用于安卓操作系统的应用程序;\n[0043] 其中,所述获取待识别的应用程序的可执行文件,包括:获取待识别的应用程序中的可执行文件dex文件。本实施例中,如果获取的待识别的应用程序中的可执行文件apk文件,则需要对该文件进行解压,从而可以获取其中的可执行文件classes.dex。\n[0044] 其中,dex文件是Android平台上可执行文件的类型。\n[0045] apk是AndroidPackage的缩写,即Android安装包。把android sdk编译的工程打包成一个安装程序文件,格式为apk。通过将apk文件直接传到Android模拟器或Android手机中执行即可安装。\n[0046] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述第一反编译文件的文件格式为smali格式,所述第二反编译文件的文件格式为class格式。\n[0047] 本实施例中,第一反编译文件的文件格式可以为smali格式,也可以为其它格式,第二反编译文件的文件格式可以为class格式,也可以为其它格式,本发明对此不作限定。\n[0048] 其中,smali格式的文件是由Android系统里的Java虚拟机的寄存器语言编写的代码文件,class格式的文件是一种可以运行在任何支持Java虚拟机的硬件平台和操作系统的二进制文件,\n[0049] dx是AndroidSDK中的工具之一,用于将一系列的类文件(classfiles)转换为一个dex文件。dx一般存在于android-sdk/platform-tools/lib目录下,文件名为dx.jar。\n[0050] 就应用于安卓操作系统的应用程序而言,正版apk文件是由Java源程序经编译生成class文件,再通过dx工具打包成的。而非正版apk应用程序是将正版apk文件反编译成smali格式的文件,由smali文件生成的。因此若第一数字水印与第三数字水印的相似度大于第一数字水印与第二数字水印的相似度,则说明可从待识别的应用程序中获取的执行文件是由class文件编译生成的,由此确定出待识别的应用程序是正版,否则说明从待识别的应用程序中获取的可执行文件是由smali文件生成的,由此确定出待识别的应用程序为非正版。\n[0051] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述第一反编译算法为baksmali算法,所述第一编译算法为smali算法。\n[0052] 本实施例中,第一反编译算法可以为baksmali算法,也可以为其它算法,第一编译算法可以为smali算法,也可以为其它算法,本发明对此不作限定。\n[0053] 其中,baksmali、smali分别是指Android系统里的Java虚拟机所使用的一种dex格式文件的反汇编器、汇编器。\n[0054] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述第二反编译算法为dex2jar算法,所述第二编译算法为dx算法。\n[0055] 本实施例中,第二反编译算法可以为dex2jar算法,也可以为其它算法,第二编译算法可以为dx算法,也可以为其它算法,本发明对此不作限定。\n[0056] 其中,dex2jar是一种将Android系统里的dex文件转换为class文件的反编译器。\n[0057] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述数字水印包括:类的排序,但本发明不限于此,还可以是其它形式的数字水印。\n[0058] 本实施例中,类是面向对象程序设计语言中对某个对象的定义,它包含有关对象动作方式的信息,包括名称、方法、属性和事件。类的排序为待识别的应用程序的可执行文件经过反编译和编译后生成的文件中所包含的类的排序。\n[0059] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度,包括:通过编辑距离算法获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度。\n[0060] 本实施例中,获取相似度的算法可以为编辑距离算法,也可以为其它算法,本发明对此不作限定。\n[0061] 可选地,在本发明利用数字水印识别应用程序是否是正版的方法的另一实施例中,所述对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,包括:对所述可执行文件模拟使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件;和/或\n[0062] 所述对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,包括:对所述可执行文件模拟使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件。\n[0063] 本实施例中,模拟过程的运用不需要在实际上生成第一编译文件,在实际生成第一编译文件的过程中,即可从中提取第二数字水印,这样对第二数字水印的提取更加快捷。\n本发明不限于此,也在实际生成第一编译文件后,从实际生成的第一编译文件提取第二数字水印。\n[0064] 同理,模拟过程的运用不需要在实际上生成第二编译文件,在实际生成第二编译文件的过程中,即可从中提取第三数字水印,这样对第三数字水印的提取更加快捷。本发明不限于此,也在实际生成第二编译文件后,从实际生成的第二编译文件提取第三数字水印。\n[0065] 参看图2,本发明的实施例提供一种利用数字水印识别应用程序是否是正版的系统,包括:第一数字水印提取单元1,用于从待识别的应用程序的可执行文件中提取第一数字水印;第二数字水印提取单元2,用于对所述可执行文件使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件,从所述第一编译文件中提取第二数字水印;其中,所述第二数字水印与所述第一数字水印属于相同类别的数字水印;第三数字水印提取单元3,用于对所述可执行文件使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件,从所述第二编译文件中提取第三数字水印;其中,所述第三数字水印与所述第一数字水印属于相同类别的数字水印;并且,所述另外一种先反编译后编译的算法中,反编译后生成的文件的格式,与编译生成所述待识别的应用程序所对应的正版应用程序的可执行文件的过程中所生成的相应文件的文件格式相同;相似度提取单元4,用于获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度;比较单元5,用于将所述第一数字水印与第二数字水印的相似度与所述第一数字水印与第三数字水印的相似度进行比较;确定单元6,用于若所述第一数字水印与第三数字水印的相似度大于所述第一数字水印与第二数字水印的相似度,则确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版。\n[0066] 本实施例中,待识别的应用程序运行的系统环境可以是安卓系统,也可以是其它操作系统,本发明对此不作限定。\n[0067] 本发明实施例提供的利用数字水印识别应用程序是否是正版的系统,若第一数字水印与第三数字水印的相似度大于第一数字水印与第二数字水印的相似度,则说明编译生成待识别的应用程序的可执行文件的过程,与编译生成待识别的应用程序对应的正版应用程序的可执行文件的过程更相似,由此可确定出所述待识别的应用程序是正版,否则,则确定出所述待识别的应用程序为非正版;这样,在没有正版应用程序做比对的情况下,也能够方便地识别待识别的应用程序是否是正版。\n[0068] 可选地,参看图3,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述第二数字水印提取单元2可以包括:第一反编译子单元20,用于对所述可执行文件使用第一反编译算法进行反编译生成第一反编译文件;第一编译子单元21,用于对所述第一反编译文件使用第一编译算法进行编译生成与所述可执行文件的文件格式相同的第一编译文件;第二数字水印提取子单元22,用于从所述第一编译文件中提取第二数字水印。\n[0069] 可选地,参看图4,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述第三数字水印提取单元3可以包括:第二反编译子单元30,用于对所述可执行文件使用第二反编译算法进行反编译生成第二反编译文件;第二编译子单元31,用于对所述第二反编译文件使用第二编译算法进行编译生成与所述可执行文件的文件格式相同的第二编译文件;第三数字水印提取子单元32,用于从所述第二编译文件中提取第三数字水印。\n[0070] 可选地,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述应用程序是应用于安卓操作系统的应用程序;\n[0071] 其中,所述第一数字水印提取单元,用于从待识别的应用程序的可执行文件dex文件中提取第一数字水印。\n[0072] 本实施例中,如果获取的文件是apk文件,则需要对该文件进行解压,从而可以获取其中的可执行文件classes.dex。\n[0073] 其中,apk是AndroidPackage的缩写,即Android安装包。dex文件是Android平台上可执行文件的类型。\n[0074] 可选地,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述第一反编译文件的文件格式为smali格式,所述第二反编译文件的文件格式为class格式。\n[0075] 本实施例中,第一反编译文件的文件格式可以为smali格式,也可以为其它格式,第二反编译文件的文件格式可以为class格式,也可以为其它格式,本发明对此不作限定。\n[0076] 其中,smali格式的文件是由Android系统里的Java虚拟机的寄存器语言编写的代码文件,class格式的文件是一种可以运行在任何支持Java虚拟机的硬件平台和操作系统的二进制文件。\n[0077] dx是AndroidSDK中的工具之一,用于将一系列的类文件(classfiles)转换为一个dex文件。dx一般存在于android-sdk/platform-tools/lib目录下,文件名为dx.jar。\n[0078] 就应用于安卓操作系统的应用程序而言,正版apk文件是由Java源程序经编译生成class文件,再通过dx工具打包成的。而非正版apk应用程序是将正版apk文件反编译成smali格式的文件,由smali文件生成的。因此若第一数字水印与第三数字水印的相似度大于第一数字水印与第二数字水印的相似度,则说明可从待识别的应用程序中获取的执行文件是由class文件编译生成的,由此确定出待识别的应用程序是正版,否则说明从待识别的应用程序中获取的可执行文件是由smali文件生成的,由此确定出待识别的应用程序为非正版。\n[0079] 可选地,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述第一反编译算法为baksmali算法,所述第一编译算法为smali算法。\n[0080] 本实施例中,第一反编译算法可以为baksmali算法,也可以为其它算法,第一编译算法可以为smali算法,也可以为其它算法,本发明对此不作限定。\n[0081] 其中,baksmali、smali分别是指Android系统里的Java虚拟机所使用的一种dex格式文件的反汇编器、汇编器。\n[0082] 可选地,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述第二反编译算法为dex2jar算法,所述第二编译算法为dx算法。\n[0083] 本实施例中,第二反编译算法可以为dex2jar算法,也可以为其它算法,第二编译算法可以为dx算法,也可以为其它算法,本发明对此不作限定。\n[0084] 其中,dex2jar是一种将Android系统里的dex文件转换为class文件的反编译器。\n[0085] 可选地,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述数字水印包括:类的排序,但本发明不限于此,还可以是其它形式的数字水印。\n[0086] 本实施例中,类是面向对象程序设计语言中对某个对象的定义,它包含有关对象动作方式的信息,包括名称、方法、属性和事件。类的排序为待识别的应用程序的可执行文件经过反编译和编译后生成的文件中所包含的类的排序。\n[0087] 可选地,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述相似度提取单元,用于通过编辑距离算法获取第一数字水印与第二数字水印的相似度以及所述第一数字水印与第三数字水印的相似度。\n[0088] 本实施例中,获取相似度的算法可以为编辑距离算法,也可以为其它算法,本发明对此不作限定。\n[0089] 可选地,在本发明利用数字水印识别应用程序是否是正版的系统的另一实施例中,所述系统可以包括:第一模拟单元,用于对所述可执行文件模拟使用一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第一编译文件;和/或[0090] 第二模拟单元,用于对所述可执行文件模拟使用另外一种先反编译后编译的算法生成与所述可执行文件的文件格式相同的第二编译文件。\n[0091] 本实施例中,模拟过程的运用不需要在实际上生成第一编译文件,在实际生成第一编译文件的过程中,即可从中提取第二数字水印,这样对第二数字水印的提取更加快捷。\n本发明不限于此,也在实际生成第一编译文件后,从实际生成的第一编译文件提取第二数字水印。\n[0092] 同理,模拟过程的运用不需要在实际上生成第二编译文件,在实际生成第二编译文件的过程中,即可从中提取第三数字水印,这样对第三数字水印的提取更加快捷。本发明不限于此,也在实际生成第二编译文件后,从实际生成的第二编译文件提取第三数字水印。\n[0093] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。\n[0094] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
法律信息
- 2018-03-30
- 2016-02-03
实质审查的生效
IPC(主分类): G06F 21/16
专利申请号: 201410306828.X
申请日: 2014.06.30
- 2016-01-06
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-04-23
|
2013-12-02
| | |
2
| |
2009-07-08
|
2008-12-25
| | |
3
| | 暂无 |
2012-06-11
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |