著录项信息
专利名称 | 应用程序的安全性检测方法和装置 |
申请号 | CN201410375006.7 | 申请日期 | 2014-07-31 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-10-29 | 公开/公告号 | CN104123493A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/55 | IPC分类号 | G;0;6;F;2;1;/;5;5;;;G;0;6;F;2;1;/;1;2查看分类表>
|
申请人 | 百度在线网络技术(北京)有限公司 | 申请人地址 | 北京市海淀区上地十街10号百度大厦三层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 百度在线网络技术(北京)有限公司 | 当前权利人 | 百度在线网络技术(北京)有限公司 |
发明人 | 包沉浮;夏良钊 |
代理机构 | 北京品源专利代理有限公司 | 代理人 | 路凯;胡彬 |
摘要
本发明实施例提供一种应用程序的安全性检测方法和装置。该方法包括:从待检测的应用程序中获取程序特征,程序特征至少包括:代码结构特征和/或文件结构特征;将程序特征与标准程序特征进行匹配,根据匹配结果确定应用程序的安全性。本方案通过从待检测应用程序中获取程序特征,能够得到包括代码结构特征和/或文件结构特征在内的重要特征,并通过将程序特征与标准程序特征进行匹配,能够根据匹配成功、匹配失败、或特征重合度等匹配结果确定待检测的应用程序的安全性,通过匹配程序特征,能够检测代码是否被更改,或是否增加恶意代码,以及文件是否被替换等,因此通过代码结构特征和/或文件结构特征能够从根本上检测待检测应用程序是否为盗版。
1.一种应用程序的安全性检测方法,其特征在于,包括:
从待检测的应用程序中获取程序特征,所述程序特征至少包括:文件结构特征,或所述程序特征至少包括:代码结构特征和文件结构特征;
将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性;
其中,所述代码结构特征或文件结构特征包括程序的单元属性集合,则将所述程序特征与标准程序特征进行匹配,包括:
将所述单元属性集合与标准程序中对应的单元属性集合进行匹配,将集合中单元的重合度作为匹配结果;
其中,所述单元为代码类或文件;
所述单元属性集合为所述应用程序中全部单元的属性集合或全部单元属性集合的设定子集合;
所述单元属性为唯一标识所述单元的属性。
2.根据权利要求1所述的方法,其特征在于:
所述单元为代码类时,所述代码类属性包括类名称、类代码和类代码哈希值的至少一项;
所述单元为文件时,所述文件属性包括文件名称和/或文件名称哈希值。
3.根据权利要求1所述的方法,其特征在于,从待检测的应用程序中获取程序特征,包括:
从客户端接收从待检测的应用程序中获取程序特征,其中,所述程序特征为所述客户端基于设定摘要算法计算的摘要数据;
则将所述程序特征与标准程序特征进行匹配包括:
基于所述设定摘要算法将所述程序特征进行还原,并与标准程序特征进行匹配;或将所述程序特征与标准程序特征进行匹配,其中,所述标准程序特征为基于设定摘要算法计算的摘要数据。
4.根据权利要求1-3任一所述的方法,其特征在于,在从待检测的应用程序中获取程序特征之前,还包括:
将所述待检测的应用程序的安全证书在预设正版安装证书列表中进行匹配;
如果没有匹配到所述安全证书,则触发执行从待检测的应用程序中获取程序特征的操作。
5.一种应用程序的安全性检测装置,其特征在于,包括:
程序特征获取模块,用于从待检测的应用程序中获取程序特征,所述程序特征至少包括:文件结构特征,或所述程序特征至少包括:代码结构特征和文件结构特征;
程序安全性确定模块,用于将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性;
其中,所述代码结构特征或文件结构特征包括程序的单元属性集合,则程序安全性确定模块具体用于:
将所述单元属性集合与标准程序中对应的单元属性集合进行匹配,将集合中单元的重合度作为匹配结果;
其中,所述单元为代码类或文件;
所述单元属性集合为所述应用程序中全部单元的属性集合或全部单元属性集合的设定子集合;
所述单元属性为唯一标识所述单元的属性。
6.根据权利要求5所述的装置,其特征在于:
所述单元为代码类时,所述代码类属性包括类名称、类代码和类代码哈希值的至少一项;
所述单元为文件时,所述文件属性包括文件名称和/或文件名称哈希值。
7.根据权利要求5所述的装置,其特征在于,程序特征获取模块具体用于:从客户端接收从待检测的应用程序中获取程序特征,其中,所述程序特征为所述客户端基于设定摘要算法计算的摘要数据;
则程序安全性确定模块具体用于:基于所述设定摘要算法将所述程序特征进行还原,并与标准程序特征进行匹配;或,将所述程序特征与标准程序特征进行匹配,其中,所述标准程序特征为基于设定摘要算法计算的摘要数据。
8.根据权利要求5-7任一所述的装置,其特征在于,该装置还包括:
安全证书匹配模块,用于在从待检测的应用程序中获取程序特征之前,将所述待检测的应用程序的安全证书在预设正版安装证书列表中进行匹配;
触发模块,用于如果没有匹配到所述安全证书,则触发执行从待检测的应用程序中获取程序特征的操作。
应用程序的安全性检测方法和装置\n技术领域\n[0001] 本发明实施例涉及软件安全技术,尤其涉及一种应用程序的安全性检测方法和装置。\n背景技术\n[0002] 以安卓(Andorid)应用程序为例,Andorid平台是目前世界上较流行的一种以Linux为基础的开放源码操作系统,主要应用于手机、平板电脑等移动终端。Android平台由操作系统、中间件、用户界面和应用软件组成,Android应用程序即指Android平台下的应用软件。Android应用程序的开放性使应用程序本身获得了快速的发展,但由于Android操作系统本身缺乏严格的审核机制和有效的应用认证机制,带来了各种隐患,其中一大隐患就是盗版应用程序的泛滥。\n[0003] 盗版应用程序会带来各种各样的问题:大量的“去广告”版使得开发者蒙受经济损失,让正版应用程序开发者无法从开发应用中获利;更为严重的是,大量的恶意程序伪装成正版应用诱骗用户下载,并在其中植入了恶意代码,可以盗取用户的隐私信息或感染其手机,使用户遭受巨大经济损失。因此,对应用程序进行安全检测的技术应运而生。\n[0004] 现有的应用程序的安全性检测技术,一般是根据应用程序的包名或者应用名称的完全匹配来进行检测。\n[0005] 上述应用程序的安全性检测技术存在以下缺陷:由于盗版应用程序通过修改原始应用程序的包名,或者取一些近似的应用名称,导致盗版应用程序的检测率低。\n发明内容\n[0006] 本发明实施例提供一种应用程序的安全性检测方法和装置,以检测应用程序的安全性,提高了盗版应用程序的检测率。\n[0007] 第一方面,本发明实施例提供了一种应用程序的安全性检测方法,包括:\n[0008] 从待检测的应用程序中获取程序特征,所述程序特征至少包括:代码结构特征和/或文件结构特征;\n[0009] 将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性。\n[0010] 第二方面,本发明实施例还提供了一种应用程序的安全性检测装置,包括:\n[0011] 程序特征获取模块,用于从待检测的应用程序中获取程序特征,所述程序特征至少包括:代码结构特征和/或文件结构特征;\n[0012] 程序安全性确定模块,用于将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性。\n[0013] 本发明实施例提供的应用程序的安全性检测方法和装置,通过从待检测的应用程序中获取程序特征,能够得到包括代码结构特征和/或文件结构特征在内的重要特征,并通过将程序特征与标准程序特征进行匹配,能够根据匹配成功、匹配失败、或特征重合度等匹配结果确定待检测的应用程序的安全性。本方案通过匹配程序特征,能够检测代码是否被更改,或是否增加恶意代码,以及文件是否被替换等,因此通过代码结构特征和/或文件结构特征能够从根本上检测待检测应用程序是否为盗版。\n附图说明\n[0014] 为了更清楚地说明本发明,下面将对本发明中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。\n[0015] 图1a为本发明实施例一提供的一种应用程序的安全性检测方法的流程图;\n[0016] 图1b为本发明实施例一的方法适用的客户端和服务器协同工作的示意图;\n[0017] 图2a为本发明实施例二提供的一种应用程序的安全性检测方法的流程图;\n[0018] 图2b为本发明实施例二提供的另一种应用程序的安全性检测方法的流程图;\n[0019] 图3为本发明实施例三提供的一种应用程序的安全性检测方法的流程图;\n[0020] 图4为本发明实施例四提供的一种应用程序的安全性检测装置的结构示意图。\n具体实施方式\n[0021] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例中的技术方案作进一步详细描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。\n[0022] 实施例一\n[0023] 请参阅图1a,为本发明实施例一提供的一种应用程序的安全性检测方法的流程图。本发明实施例的方法可以由硬件和/或软件实现的应用程序的安全检测装置来执行,该实现装置典型的是配置于能够提供应用程序的安全检测服务的服务器中。\n[0024] 如图1a所示,该方法包括:\n[0025] 110、从待检测的应用程序中获取程序特征,所述程序特征至少包括:代码结构特征和/或文件结构特征;\n[0026] 本操作具体是获取待检测的应用程序的程序特征。具体地,可以只获取待检测的应用程序的代码结构特征,也可以只获取待检测的应用程序的文件结构特征,还可以获取待检测的应用程序的代码结构特征以及文件结构特征。\n[0027] 以Andorid应用程序为例进行说明。在Android系统中,一个可以安装、运行的应用,需要打包成Android系统的APK(Android application package file)文件格式,即Android安装包。Android系统中检测一个应用的安全性是通过APK文件的特征进行检测的。\n[0028] 120、将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性。\n[0029] 本操作具体是将待检测的应用程序的程序特征与正版应用的标准程序特征进行匹配,并基于匹配结果确定待检测的应用程序的安全性。\n[0030] 下面对代码结构特征和文件结构特征进行解释。代码结构特征和文件结构特征,即不仅体现代码和文件本身的特征,还体现代码和文件集合的结构属性,则在进行应用程序安全性检测时,能够综合考虑程序的整体属性特点。\n[0031] 优选地,所述代码结构特征包括程序的单元属性集合。\n[0032] 进一步地,所述单元为代码类;所述单元属性集合为所述应用程序中全部单元的属性集合或全部单元属性集合的设定子集合;所述单元属性为唯一标识所述单元的属性。\n[0033] 具体地,所述单元为代码类时,所述代码类属性包括类名称、类代码和类代码哈希值的至少一项。其中,哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,该较小的二进制值称为哈希值。\n[0034] Android应用通常是用Java语言开发的,用Android开发工具编译之后形成二进制的字节码,这些字节码被打包成classes.dex文件,换言之,Android应用的代码主体为classes.dex文件所包含的Java类。通过解析classes.dex文件,反编译其字节码,就可以得到应用程序所要执行的代码。\n[0035] 具体地,可以从待检测的应用程序中获取包含有代码主体的classes.dex文件;统计classes.dex文件中所包含的所有Java类,并确定Java类对应的属性,所述Java类对应的属性可以包括:Java类的名称、Java类所包含的代码和/或Java类代码的哈希值;而后将至少一个Java类对应的属性作为待检测的应用程序的代码结构特征,通常是多个Java类的属性构成一个属性集合。\n[0036] 当全部代码类的属性构成集合时,可能检测的数据量过大,则可以通过检测设定子集合的方式来实现。设定子集合,即按照设定的相同规则对待检测的应用程序和标准应用程序的单元属性集合进行提炼,得到子集合。例如,设定提取规则可以为在单元属性排序后,提取单数个单元属性;还可以为,将所有单元属性按照设定函数进行处理,得到子集合等。这样可以将单元属性集合的部分属性进行重合度比对,减少了比对的数据量,当代码类的量较大时,也能一定程度上保证比对的准确性。\n[0037] 优选地,所述文件结构特征包括程序的单元属性集合。\n[0038] 进一步地,所述单元为文件;所述单元属性集合为所述应用程序中全部单元的属性集合或全部单元属性集合的设定子集合;所述单元属性为唯一标识所述单元的属性。设定子集合的处理方式参见前述解释。\n[0039] 具体地,所述单元为文件时,所述文件属性包括文件名称和/或文件名称哈希值。\n[0040] Android应用程序的APK文件实际上为一个符合固定格式规范的zip文件。通过Unzip等工具解压可以看到其内部的文件结构。APK文件包括:classes.dex文件、assets目录、res目录、libs目录以及AndroidManifest.xml文件等文件或目录。\n[0041] 所述单元为文件时,既可以包括APK文件中的广义的文件,也可以包括APK文件中狭义的目录。\n[0042] 其中,res目录包括Android应用程序所使用的图片以及文件等资源文件;assets目录包括Android应用程序所使用的其他资源文件;libs目录包括运行Android应用程序所需的库文件;AndroidManifest.xml是每个APK文件所必需的全局描述文件,其中列出了Android安装包中应用的每个模块的入口信息,在Android系统中,只有在\nAndroidManifest.xml文件中列出了的模块,才能够被系统调用。\n[0043] 具体地,可以从待检测的应用程序中获取待检测的应用程序所包含的文件,并确定文件对应的属性,所述属性包括:文件的文件名称和/或文件名称的哈希值;而后将至少一个文件对应的属性确定为待检测的应用程序的文件结构特征,构成属性集合,通常由多个文件的属性构成此属性集合。\n[0044] 在所述代码结构特征或文件结构特征包括程序的单元属性集合时,操作120具体是将所述单元属性集合与标准程序中对应的单元属性集合进行匹配,将集合中单元的重合度作为匹配结果,并根据匹配结果确定所述待检测的应用程序的安全性。\n[0045] 目前盗版应用通常的制作手段是在正版应用的基础上做篡改(例如,修改classes.dex文件中的某些代码或增加恶意代码,或者替换某些资源文件),因此代码结构特征和文件结构特征通常在正版应用和盗版应用中保持相似性,因此通过将待检测应用程序的程序特征与正版应用的标准程序特征进行匹配,根据特征的相似度或单元的重合度,能够检测待检测的应用程序是否安全。另外,可以根据程序特征与正版应用的标准程序特征为完全匹配还是不完全匹配,检测待检测的应用程序的安全性。\n[0046] 示例性地,待检测的应用程序中的classes.dex文件包括m个Java类,分别为M1,M2,M3,…,Mm,并且采用各Java类的代码作为属性,正版应用程序中的classes.dex文件包括n个Java类,分别为N1,N2,N3,…,Nn,并且采用各Java类的代码作为标准属性,并根据预设策略,选取待检测的应用程序的classes.dex文件中的全部Java类的代码集合与正版应用中对应的Java类的代码集合进行匹配。\n[0047] 当m等于n,m个Java类中的代码与n个Java类中的代码完全一致时,检测结果为待检测的应用程序安全,之后,可以在客户端提示用户“安全”或“可以安装”等。\n[0048] 当m大于n,以m等于6,n等于4为例,M1,M2和M3的代码与N1,N2和N3的代码相同,但M4的代码与N4的代码不完全相同,且检测到M5和M6为新增代码,则可以确定集合中Java类的代码的重合度,如果该重合度高于预设第一门限值(例如,80%),则检测结果为待检测的应用程序为盗版,之后,可以在客户端提示用户“当前应用为盗版”等;如果该重合度低于预设第二门限值(例如,15%),则检测结果为待检测的应用程序的安全性未知,相应地,可以在客户端提示用户“当前应用的安全性未知”或“当前应用的安全性未知,请谨慎安装”等。\n[0049] 需要说明的是,检测的特征越多(例如既检测代码结构特征,又检测文件结构特征,又如,检测应用程序中全部单元的属性集合,再如,检测多个属性),检测到的安全性结果越准确,但检测耗时较长;检测的特征越少(例如,只检测代码结构特征,或只检测文件结构特征,又如,检测应用程序的全部单元属性集合的设定子集合,再如,只检测一个属性),检测耗时较短,但检测到的安全性结果的准确度较低。\n[0050] 本实施例的技术方案,通过从待检测的应用程序中获取程序特征,能够得到包括代码结构特征和/或文件结构特征在内的重要特征,并通过将程序特征与标准程序特征进行匹配,能够根据匹配成功、匹配失败、或特征相似度等匹配结果确定待检测的应用程序的安全性。\n[0051] 需要说明的是,除了获取代码结构特征和/或文件结构特征之外,还可以获取应用程序的包名、应用程序的名称、应用程序的图标或应用程序的版本号,作为程序特征。\n[0052] 其中,Android操作系统通过APK的包名(package name)对各个安装的APK文件进行管理。例如某个Android安装包的包名是com.qihoo360.mobilesafe。Android系统要求每个应用都声明一个唯一的包名。Android平台下的盗版应用也需要声明一个包名,因此,包名就可以作为识别盗版软件的一个重要特征。\n[0053] 现有的应用程序的安全性检测技术,一般是根据应用程序的包名或者应用名称的完全匹配来进行检测。但由于应用的包名可以随意指定或者修改,因此现在越来越多的盗版应用程序都修改了原始应用程序的包名以逃避检查。另外,采用应用程序的名称的完全匹配作为特征也存在不足,因为盗版程序可以取一些与正版应用近似的名字来误导用户。\n例如根据正版应用“愤怒的小鸟”取名为“愤怒的小鸟升级版”,或者根据正版应用“招商银行”取名“招行网银”等等。\n[0054] 因此,通过匹配代码结构特征和/或文件结构特征,能够检测代码是否被更改,或是否增加恶意代码,以及文件是否被替换等,因此通过代码结构特征和/或文件结构特征能够从根本上检测待检测应用程序是否为盗版,也即能够从根本上提高待检测的应用程序的安全性的识别率,此外,通过应用程序的包名、应用程序的名称、应用程序的图标或应用程序的版本号作为辅助识别特征,能够进一步提高待检测的应用程序的安全性的识别率。\n[0055] 针对大量用现有检测手段无法查出的盗版应用,比如某个应用的名称为“阿狸”,包名和图标也无法匹配到任何已知的正版应用,但是通过本方案可以检测该应用实际上就是“百度贴吧”的一个盗版。\n[0056] 需要说明的是,所述“和/或”是指从Android安装包中可以单独提取出其中任意一项特征信息用作安全检测,也可以提取出多项特征信息的组合用作安全检测。其中,同时提取多项特征进行检测的效果要优于单项特征,提取多项特征进行检测,可以提高待检测的应用程序的安全性的识别率。\n[0057] 上述辅助识别特征数量的选取,对安全性检测结果准确度和检测耗时的影响,与代码结构特征和/或文件结构特征,以及全部属性集合或全部单元属性集合的设定子集合,以及属性数量对安全性检测结果准确度和检测耗时的影响类似,此处不再赘述。\n[0058] 此外,还需要说明的是,虽然以Andorid应用程序为例对本实施例的技术方案进行说明,但本实施例提供的应用程序的安全性检测方法并不以此为限,本实施例的技术方案同样适用于现有的其他操作平台。\n[0059] 上述方法,可以由服务器来执行,从客户端接收待检测应用程序的程序特征,执行匹配和安全性检测操作后,再将安全性检测结果推送给客户端。或者,可以由客户端执行匹配和安全性检测操作。或者,也可以由客户端与服务器配合,由客户端获取待检测应用程序的程序特征,由服务器获取标准应用的程序特征,并执行匹配和安全性检测操作。\n[0060] 下面结合图1b说明客户端和服务器协同工作的过程。\n[0061] 由于Android客户端的资源有限,为了能够容纳多达上百万款的正版应用的程序特征,服务器需要维护一个定期更新的正版应用程序的特征库,进行安全性检测时,客户端只负责从待检测的应用程序中提取程序特征并将所述程序特征发往服务器,服务器基于所述特征库执行匹配和安全性检测操作,服务器再将安全性检测结果推送给客户端。该协同工作模式避免了客户端因为资源有限无法保存大量特征的问题,同时也使得正版应用的特征库的更新更加及时和灵活。\n[0062] 本发明实施例以Android操作系统下的应用程序为例进行说明,但本领域技术人员可以理解,只要应用程序具有诸如类、文件等多个单元个体,能够以单元集合形式来比对其结构特征,均可采用本发明实施例的技术方案进行安全性检测。\n[0063] 实施例二\n[0064] 请参阅图2a,为本发明实施例二提供的一种应用程序的安全性检测方法的流程图。\n[0065] 如图2a所示,该方法包括:\n[0066] 210、从客户端接收从待检测的应用程序中获取程序特征,其中,所述程序特征为所述客户端基于设定摘要算法计算的摘要数据;\n[0067] 在本操作中,所述程序特征至少包括:代码结构特征和/或文件结构特征。\n[0068] 本操作具体是获取待检测的应用程序的代码结构特征的摘要数据和/或文件结构特征的摘要数据。\n[0069] 其中,摘要算法是根据任意长度的二进制输入产生固定长度的较小二进制输出的算法。例如,待检测的应用程序的程序特征为S,基于设定摘要算法计算的程序特征的摘要数据D可以采用下式表示:\n[0070] D=Digest(S)\n[0071] 式中,Digest为设定摘要算法,如Simhash算法。\n[0072] 需要说明的是,程序特征的摘要数据保留了原始数据的相似度特性,也即保留了原始程序特征的相似度特性。程序特征与程序特征的摘要数据的区别在于:程序特征的数据量远远大于程序特征的摘要数据的数据量,对于很大的程序特征,该特征的摘要数据只需要很少字节就可以表示的该特征的特性。\n[0073] 代码结构特征的摘要数据可以包括应用程序中全部代码类名称的摘要数据的集合,或全部代码类名称的摘要数据的集合中的设定子集合,也可以包括应用程序中全部代码类的代码的摘要数据的集合,或全部代码类的代码的摘要数据的集合中的设定子集合,还可以包括应用程序中全部代码类的代码哈希值的摘要数据的集合,或全部代码类的代码哈希值的摘要数据的集合中的设定子集合。\n[0074] 文件结构特征的摘要数据可以包括应用程序中全部文件名称的摘要数据的集合,或全部文件名称的摘要数据的集合中的设定子集合,也可以包括应用程序中全部文件的文件名称哈希值的摘要数据的集合,或全部文件的文件名称哈希值的摘要数据的集合中的设定子集合。\n[0075] 220、基于所述设定摘要算法将所述程序特征进行还原,与标准程序特征进行匹配,并根据匹配结果确定所述待检测的应用程序的安全性。\n[0076] 本操作具体是利用设定摘要算法将程序特征的摘要数据还原为程序特征本身,而后将还原得到的程序特征与正版应用的标准程序特征进行匹配,然后根据匹配结果确定待检测的应用程序的安全性,检测结果可以包括待检测的应用程序为正版应用、为盗版应用或安全性未知。\n[0077] 需要说明的是,进行还原操作所采用的设定摘要算法与客户端根据程序特征得到程序特征的摘要数据所采用的设定摘要算法的相关联。换言之,待检测的应用程序的程序特征为S,与客户端基于设定摘要算法计算的程序特征的摘要数据D之间的关系如下式所示:\n[0078] D=Digest(S)\n[0079] 而操作220中根据程序特征的摘要数据D获得原始程序特征S的还原操作所采用的设定摘要算法为摘要算法Digest的逆算法。\n[0080] 本实施例的技术方案,通过从客户端接收待检测应用程序的程序特征的摘要数据,并将所述摘要数据进行还原,能够得到待检测的应用程序的程序特征,通过将还原得到的程序特征与正版应用的标准程序特征进行匹配,基于匹配结果能够确定待检测的应用程序的安全性。\n[0081] 本方案通过匹配程序特征,能够检测代码是否被更改,或是否增加恶意代码,以及文件是否被替换等,因此通过代码结构特征和/或文件结构特征能够从根本上检测待检测应用程序是否为盗版。\n[0082] 请参阅图2b,作为本实施例的一种优选的实施方式,该优选方法包括:\n[0083] 210、从客户端接收从待检测的应用程序中获取程序特征,其中,所述程序特征为所述客户端基于设定摘要算法计算的摘要数据;\n[0084] 在本操作中,所述程序特征至少包括:代码结构特征和/或文件结构特征。\n[0085] 230、将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性,其中,所述标准程序特征为基于设定摘要算法计算的摘要数据。\n[0086] 本操作具体是将待检测应用程序的程序特征的摘要数据与正版应用的标准程序特征的摘要数据进行匹配,并基于匹配结果确定待检测的应用程序的安全性。\n[0087] 其中,根据待检测应用程序的程序特征得到对应的摘要数据所采用的摘要算法,与根据标准程序特征得到对应的摘要数据所采用的摘要算法相同。\n[0088] 需要说明的是,无论是代码结构特征还是文件结构特征都将是一个非常大的集合,集合中的元素少则几十,多则几千甚至几万。一方面,如果将这些元素都保存下来,会产生很多问题:如果针对每一个标准应用都要维护这样的集合,服务器需要保存大量的数据;\n而且需要获取待检测应用程序的相应数据在服务器中进行匹配,会消耗非常大的网络流量;此外由于需要匹配的特征所包含的数据量很大,导致匹配过程耗时长,从而导致安全性的检测效率降低。\n[0089] 本优选的实施方式利用摘要算法分别将原本很复杂的待检测应用程序和标准应用的代码结构特征和/或文件结构特征所包含的数据转化为用很少字节就可以表示的摘要数据,该摘要数据保留了原始特征的相似度特性,因此将待检测应用程序的程序特征的摘要数据D与标准应用的程序特征的摘要数据D’进行匹配,等价于将待检测应用程序的程序特征S与标准应用的程序特征S’进行匹配。因此,只需要将待检测应用程序的程序特征的摘要数据D而不是程序特征S发往服务器进行匹配,服务器也只需为每个标准应用保存特征程序特征的摘要数据D’而不是标准应用程序特征S’,基于此能够大大增加匹配的效率,并减少所需要的网络和存储资源。\n[0090] 上述方法,可以由服务器来执行,从客户端接收待检测应用程序的程序特征的摘要数据,执行匹配和安全性检测操作后,再将安全性检测结果推送给客户端。或者,可以由客户端执行匹配和安全性检测操作。或者,也可以由客户端与服务器配合,由客户端获取待检测应用程序的程序特征的摘要数据,由服务器获取标准应用的程序特征的摘要数据,并完成执行匹配和安全性检测操作。\n[0091] 实施例三\n[0092] 请参阅图3,为本发明实施例三提供的一种应用程序的安全性检测方法的流程图。\n该方法包括:\n[0093] 310、将所述待检测的应用程序的安全证书在预设正版安装证书列表中进行匹配,如果匹配到所述安全证书,则执行操作311,如果没有匹配到所述安全证书,则执行操作\n320;\n[0094] 本操作具体是判断预设正版安装证书列表中是否存在待检测的应用程序的安全证书。\n[0095] 由于安装证书的公钥特性,使得盗版应用程序的安装证书和正版应用程序的安装证书不同,因此通过检测安全证书,能够检测待检测应用程序是否为正版应用。如果安装证书不在正版证书列表中,则可能表示这不是一个已知的正版程序。既可能是一个与所有正版应用程序完全不同的、新开发的程序,也可能是某个已知应用程序的盗版。所以需通过特征检测进一步识别其是否为盗版程序。\n[0096] 由于一个应用程序可能会有一个或多个合法的证书,因此预设正版安装证书列表中包括现有正版应用的全部证书。\n[0097] 311、将待检测的应用程序为正版应用的结果作为检测结果,流程结束;\n[0098] 本操作具体是根据操作310的匹配结果,并且当匹配到所述安装证书时,确定检测结果。\n[0099] 320、从待检测的应用程序中获取程序特征,所述程序特征至少包括:代码结构特征和/或文件结构特征,而后执行操作330;\n[0100] 本操作具体是根据操作310的匹配结果,并且当没有匹配到所述安装证书时,触发执行从待检测的应用程序中获取程序特征的操作。\n[0101] 330、将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性,流程结束。\n[0102] 本操作具体是在预设正版安装证书列表中没有匹配到待检测的应用程序的安装证书时,通过匹配程序特征,从而确定检测结果。\n[0103] 示例性地,当待检测的应用程序的安装证书不符合正版应用的合法证书,但待检测的应用程序的程序特征与一个已知的正版应用的程序特征的相似度高于第一设定门限值时,则可以确定该待检测的应用程序为盗版应用。\n[0104] 示例性地,当待检测的应用程序的安装证书不符合正版应用的合法证书,但待检测的应用程序的程序特征与已知的正版应用的程序特征的相似度低于第二设定门限值时,则可以确定该待检测的应用程序的安全性为未知。\n[0105] 需要说明的是,服务器中维护一个定期更新的正版应用程序特征库,可能由于更新不及时,导致待检测的应用程序的程序特征与已知的正版应用的程序特征的相似度低于第二设定门限值。\n[0106] 本实施例的技术方案,通过将待检测的应用程序的安全证书在预设正版安装证书列表中进行匹配,且如果匹配到所述安全证书,则确定待检测的应用程序为正版应用;如果没有匹配到所述安装证书,则将待检测应用程序的程序特征与标准程序特征进行匹配,并根据匹配结果确定待检测的应用程序的安全性。\n[0107] 本方案通过安装证书的匹配结果能够检测应用为正版应用,避免了直接通过程序特征的完全匹配而检测应用为正版应用,提升了检测效率;在安装证书匹配失败之后,通过匹配程序特征,能够检测代码是否被更改,或是否增加恶意代码,以及文件是否被替换等,因此通过代码结构特征和/或文件结构特征能够从根本上检测待检测应用程序是否为盗版。\n[0108] 实施例四\n[0109] 请参阅图4,为本发明实施例四提供的一种应用程序的安全性检测装置的结构示意图。该装置包括:程序特征获取模块410和程序安全性确定模块420。\n[0110] 其中,程序特征获取模块410用于从待检测的应用程序中获取程序特征,所述程序特征至少包括:代码结构特征和/或文件结构特征;程序安全性确定模块420用于将所述程序特征与标准程序特征进行匹配,根据匹配结果确定所述待检测的应用程序的安全性。\n[0111] 本实施例的技术方案,通过从待检测的应用程序中获取程序特征,能够得到包括代码结构特征和/或文件结构特征在内的重要特征,并通过将程序特征与标准程序特征进行匹配,能够根据匹配成功、匹配失败、或特征相似度等匹配结果确定待检测的应用程序的安全性。\n[0112] 本方案通过匹配程序特征,能够检测代码是否被更改,或是否增加恶意代码,以及文件是否被替换等,因此通过代码结构特征和/或文件结构特征能够从根本上检测待检测应用程序是否为盗版。\n[0113] 在上述方案中,所述代码结构特征或文件结构特征包括程序的单元属性集合,则程序安全性确定模块420具体用于:将所述单元属性集合与标准程序中对应的单元属性集合进行匹配,将集合中单元的重合度作为匹配结果;或,将所述程序特征与标准程序特征进行匹配,其中,所述标准程序特征为基于设定摘要算法计算的摘要数据。\n[0114] 在上述方案中,所述单元为代码类或文件;\n[0115] 所述单元属性集合为所述应用程序中全部单元的属性集合或全部单元属性集合的设定子集合;\n[0116] 所述单元属性为唯一标识所述单元的属性。\n[0117] 进一步地,所述单元为代码类时,所述代码类属性包括类名称、类代码和类代码哈希值的至少一项;所述单元为文件时,所述文件属性包括文件名称和/或文件名称哈希值。\n[0118] 作为本实施例的一种实施方式,程序特征获取模块410具体用于:从客户端接收从待检测的应用程序中获取程序特征,其中,所述程序特征为所述客户端基于设定摘要算法计算的摘要数据;则程序安全性确定模块420具体用于:基于所述设定摘要算法将所述程序特征进行还原,并与标准程序特征进行匹配。\n[0119] 作为本实施例的另一种实施方式,该装置还可以包括:安全证书匹配模块和触发模块。\n[0120] 其中,安全证书匹配模块用于在从待检测的应用程序中获取程序特征之前,将所述待检测的应用程序的安全证书在预设正版安装证书列表中进行匹配;触发模块用于如果没有匹配到所述安全证书,则触发执行从待检测的应用程序中获取程序特征的操作。\n[0121] 本发明实施例提供的应用程序的安全性检测装置可执行本发明任意实施例所提供的应用程序的安全性检测方法,具备执行方法相应的功能模块和有益效果。\n[0122] 最后应说明的是:以上各实施例仅用于说明本发明的技术方案,而非对其进行限制;实施例中优选的实施方式,并非对其进行限制,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2017-09-26
- 2014-12-03
实质审查的生效
IPC(主分类): G06F 21/55
专利申请号: 201410375006.7
申请日: 2014.07.31
- 2014-10-29
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-05-07
|
2013-12-30
| | |
2
| |
2013-10-02
|
2013-06-08
| | |
3
| |
2012-10-24
|
2012-06-20
| | |
4
| |
2011-02-16
|
2010-11-15
| | |
5
| |
2013-12-25
|
2013-09-24
| | |
6
| |
2014-03-26
|
2013-08-05
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |