一种判断病毒代码的方法及装置与流程

文档序号:12786779阅读:307来源:国知局
本申请涉及智能终端安全
技术领域
:,尤其涉及一种判断病毒代码的方法及装置。
背景技术
::随着科技的发展,智能终端具有越来越多的功能。例如,人们的手机从传统的GSM、TDMA数字手机转向了拥有能够处理多媒体资源、提供网页浏览、电话会议、电子商务等多种信息服务的智能手机。然而,品种日益繁多的手机恶意代码攻击以及形势日益严峻的个人数据安全问题也随之而来,越来越多的手机病毒让智能手机用户饱受其苦。目前,对于各类智能终端的杀毒技术主要是基于虚拟机执行文件的字符串进行查杀,将提取的字符串特征与病毒库中的特征进行匹配,然而,某些病毒(例如木马病毒)可以很容易地通过修改病毒代码引用的字符串来达到免杀的目的,从而不能保障智能终端的安全。技术实现要素:本申请实施例提供一种克服上述问题或者至少部分地解决上述问题的判断病毒代码的方法及装置。本申请实施例采用下述技术方案:一种判断病毒代码的方法,包括:对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构;解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的函数指令序列;确定提取到的所述函数指令序列与预设的病毒代码的函数指令序列之间的编辑距离;判断确定的所述编辑距离是否小于预设阈值,若确定的所述编辑距离小于预设阈值,则确定所述应用程序的虚拟机执行文件包含病毒代码。优选地,在判断确定的所述编辑距离是否小于预设阈值之前,所述方法还包括:确定提取到的所述函数指令序列的字符总数;将所述函数指令序列的字符总数与预设数值的乘积确定为所述预设阈值;其中,所述预设数值介于0~1之间。优选地,所述对应用程序的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构,具体包括:根据虚拟机执行文件格式对虚拟机执行文件进行解析,得到每个类的函数信息结构体;根据所述函数信息结构体中的字段,确定所述虚拟机执行文件的函数的位置及大小,得到所述反编译的函数信息结构。一种判断病毒代码的方法,包括:对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构;解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的助记符序列;确定提取到的所述助记符序列与预设的病毒代码的助记符序列之间的编辑距离;判断确定的所述编辑距离是否小于预设阈值,若所述编辑距离小于预设阈值,则确定所述应用程序的虚拟机执行文件包含病毒代码。优选地,在判断确定的所述编辑距离是否小于预设阈值之前,所述方法还包括:确定提取到的所述助记符序列的字符总数;将所述助记符序列的字符总数与预设数值的乘积确定为所述预设阈值;其中,所述预设数值介于0~1之间。一种判断病毒代码的装置,该装置包括:反编译单元,用于对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取单元,用于解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的函数指令序列;编辑距离确定单元,用于确定提取到的所述函数指令序列与预设的病毒代码的函数指令序列之间的编辑距离;病毒代码确定单元,用于判断确定的所述编辑距离是否小于预设阈值,在确定的所述编辑距离小于预设阈值时,确定所述应用程序的虚拟机执行文件包含病毒代码。优选地,所述装置还包括:字符数确定单元,用于在判断确定的所述编辑距离是否小于预设阈值之前,确定提取到的所述函数指令序列的字符总数;预设阈值确定单元,用于将所述函数指令序列的字符总数与预设数值的乘积确定为所述预设阈值;其中,所述预设数值介于0~1之间。优选地,所述反编译单元包括:信息结构体获得单元,用于根据虚拟机执行文件格式对虚拟机执行文件进行解析,得到每个类的函数信息结构体;函数信息结构获得单元,用于根据所述函数信息结构体中的字段,确定所述虚拟机执行文件的函数的位置及大小,得到所述反编译的函数信息结构。一种判断病毒代码的装置,该装置包括:反编译单元,用于对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取单元,用于解析所述反编译的函数信息结构,提取所述反编译的函数 信息结构中的助记符序列;编辑距离确定单元,用于确定提取到的所述助记符序列与预设的病毒代码的函数指令序列之间的编辑距离;病毒代码确定单元,用于判断确定的所述编辑距离是否小于预设阈值,在所述编辑距离小于预设阈值时,确定所述应用程序的虚拟机执行文件包含病毒代码。优选地,所述装置还包括:字符数确定单元,用于在判断确定的所述编辑距离是否小于预设阈值之前,确定提取到的所述助记符序列的字符总数;预设阈值确定单元,用于将所述助记符序列的字符总数与预设数值的乘积确定为所述预设阈值;其中,所述预设数值介于0~1之间。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过对智能终端上安装的应用程序的虚拟机执行文件的分析和反编译,可以得到与该应用程序对应的反编译的函数信息结构中的函数指令序列(或助记符序列),并利用编辑距离算法确定提取到的所述函数指令序列(或助记符序列)与预设的病毒代码的函数指令序列(或助记符序列)之间的编辑距离,最终在确定的所述编辑距离小于预设阈值时,确定所述应用程序的虚拟机执行文件包含病毒代码,由此可以准确判断智能终端上的某个应用程序是否属于通过修改病毒代码引用的字符串来达到免杀目的的程序,从而保障智能终端的安全。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请一实施例提供的判断病毒代码的方法的流程图;图2为本申请实施例对dex文件进行反编译得到的函数信息结构的示例;图3为本申请另一实施例提供的判断病毒代码的方法的流程图;图4为本申请一实施例提供的判断病毒代码的装置的模块图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本文将以移动终端采用的安卓(Android)操作系统为例来对叙述本技术方案,但不局限于安卓(Android)操作系统。以安卓(Android)操作系统为例,一般至少包括应用程序层(app层)和系统框架层(framework层),至于从功能划分上有可能包括的其他层本申请则不作讨论。其中,通常上述app层可以是用以进行用户交互的界面,例如:用以实现应用程序维护的界面、识别用户不同种类的点击内容而显示相对应的上下文菜单等。通常上述framework层主要用于将上述app层获得的用户请求(如:启动用用程序、点击链接、点击保存图片等)往下层转发,或将下层处理好的内容通过消息或中间代理类方式来分发至上层,以对用户展现出来。Dalvik是用于Android平台的Java虚拟机。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行,独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。Dalvik虚拟机可以支持已转换为dex(DalvikExecutable)格式的Java应用程序的运行,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的各类系统。可见,在Android系统中,dex文件是可以直接在Dalvik虚拟机(DalvikVM) 中加载运行的虚拟机执行文件。通过ADT(AndroidDevelopmentTools),经过复杂的编译,可以把java源代码转换为dex文件。dex文件是针对嵌入式系统优化的结果,Dalvik虚拟机的指令码并不是标准的Java虚拟机指令码,而是使用了自己独有的一套指令集。dex文件中共用了很多类名称、常量字符串,使它的体积比较小,运行效率也比较高。值得提及的是,在Android系统中,虚拟机执行文件为dex文件,而在其他操作系统中,上述虚拟机执行文件可以是其他类型的文件,本申请不作限定。以下结合附图,详细说明本申请各实施例提供的技术方案。图1为本申请一实施例中提供的判断病毒代码的方法的流程,包括:S101:对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构。上述应用程序可以是安装于移动终端上的应用程序。上述虚拟机执行文件例如是dex文件。如前所述,Android操作系统包括应用程序层(app层)和系统框架层(framework层),本申请重点在于对app层的研究和改进。但是,本领域技术人员理解,当Android启动时,DalvikVM监视所有的程序(APK文件)和框架,并且为它们创建一个依存关系树。DalvikVM通过这个依存关系树来为每个程序优化代码并存储在Dalvik缓存(dalvik-cache)中。这样,所有程序在运行时都会使用优化过的代码。当一个程序(或者框架库)发生变更,DalvikVM将会重新优化代码并且再次将其存在缓存中。在cache/dalvik-cache是存放system上的程序生成的dex文件,而data/dalvik-cache则是存放data/app生成的dex文件。也就是说,本申请重点在于对data/app生成的dex文件进行的分析和处理。关于获取dex文件的方式,可以通过解析APK(AndroidPackage,Android安装包)获得。APK文件可以是zip格式的一个压缩包,但其后缀名可以被修改为apk,通过UnZip解压后,就可以得到上述dex文件。对dex文件进行反编译(或反汇编)有多种方式,这里示例性地给出两种方式,本领域技术人员可以在此基础上扩展出其他方式,这些方式均在本申请的保护范围之内:第一种方式:根据dex文件格式对dex文件进行解析,得到每个类的函数信息结构体;根据函数信息结构体中的字段,确定dex文件的函数的位置及大小,得到反编译的函数信息结构。其中,通过解析函数信息结构体,得到指示dex文件的函数位置的字节码数组字段以及指示dex文件的函数大小的列表长度字段,从而确定dex文件的函数的位置及大小。第二种方式:利用dex文件反编译工具将dex文件反编译为虚拟机字节码。如前所述,Dalvik虚拟机运行的是Dalvik字节码,该Dalvik字节码可以是以一个dex(DalvikExecutable)可执行文件的形式存在,Dalvik虚拟机通过解释dex文件来执行代码。目前有一些工具,可将dex文件反汇编成Dalvik汇编代码。这类dex文件的反编译工具包括但不限于:baksmali、Dedexer1.26、dexdump、dexinspecto03-12-12r、IDAPro、androguard、dex2jar、010Editor等。可见,通过对dex文件的反编译,可以得到反编译的所有函数信息结构。其中,函数信息结构包含函数执行代码,本申请实施例中,是由虚拟机指令序列和虚拟机助记符序列构成的,如下面的例子,由DalvikVM的指令序列和DalvikVM的助记符序列构成函数信息结构。例如,图2所示的是本申请实施例中对dex文件进行反编译得到的函数信息结构的示例。可见,dex文件被反编译成DalvikVM的指令序列和DalvikVM的助记符序列。S102:解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的函数指令序列。如上图2的例子,在反编译得到的函数信息结构中,机器码字段中的每一行的前2个数字是指令序列(上例子左侧被圈部分),而指令序列对应的部分为助记符(上例子右侧,部分被圈,未全部选择)。助记符主要是为了方便用 户交流和代码编写。如上例子,dex文件经过反编译就可以得到函数的指令序列为:“125438710c6e0c6e0a3854546e0c6e546e0c6e0c38720a391238546e54710e012854136e”。助记符序列为:“const/4iget-objectif-eqzinvoke-staticmove-result-objectinvoke-virtualmove-result-objectinvoke-virtualmove-resultif-eqziget-objectiget-objectinvoke-virtualmove-result-objectinvoke-virtualiget-objectinvoke-virtualmove-result-objectinvoke-virtualmove-result-objectif-eqzinvoke-interfacemove-resultif-nezconst/4if-eqziget-objectinvoke-virtualiget-objectinvoke-staticreturn-voidmovegotoiget-objectconst/16invoke-virtual”。S103:确定提取到的所述函数指令序列与预设的病毒代码的函数指令序列之间的编辑距离。编辑距离(EditDistance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。比如:要计算cafe和coffee的编辑距离,将cafe操作为coffee的过程是:cafe→caffe→coffe→coffee,则得到编辑距离是3。一般地,对于两个函数指令序列,如果这两个函数指令序列之间的编辑距离越小,表明这两个函数指令序列相似度越高,也就是表明待判断的应用程序的代码越有可能属于与病毒库中的某个病毒代码的变种。S104:判断确定的所述编辑距离是否小于预设阈值,若所述编辑距离小于预设阈值,则确定所述应用程序的虚拟机执行文件包含病毒代码。病毒代码(Viruscode)是指通过存储介质或网络进行传播,在未经授权认证的情况下破坏操作系统完整性、窃取系统中未公开秘密信息的程序或代码。以手机为例,手机恶意代码是指针对手机、PDA等手持设备的恶意代码。手机恶意代码可以简单地划分为复制型恶意代码和非复制型恶意代码。其中复制型恶意代码主要包括病毒(Virus)、蠕虫(Worm),非复制型恶意代码主要包括特洛伊木马后门程序(TrojanHorse)、流氓软件(RogueSoftware)、恶意移动代码(MaliciousMobileCode)以及Rootkit程序等。例如,通过步骤S103得到函数的指令序列为:“125438710c6e0c6e0a3854546e0c6e546e0c6e0c38720a391238546e54710e012854136e”。在预设的病毒库中存在的某种病毒代码的指令序列是:“123854710c6e0c6e0a3854546e0c6e546e0c6e0c38720a391238546e54710e012854136e”。通过计算上述两个指令序列的编辑距离,得到编辑距离=4,假设预设阈值是5,则通过比对发现上述两个指令序列的编辑距离是小于上述预设阈值的,故可以确定该程序的代码是病毒库中某病毒代码的变种,也就是病毒代码。一般地,上述预设阈值可以根据经验值进行预设。关于上述预设阈值的确定可以包括多种方式,例如:通过人为根据经验设定该预设阈值是多少,或者根据一定的计算规则确定上述预设阈值。本申请实施例中,为了提高识别病毒代码的准确性,在判断所述应用程序的虚拟机执行文件是否包含病毒代码(步骤S104)之前,所述方法还可以包括:确定提取到的所述函数指令序列的字符总数。将所述函数指令序列的字符总数与预设数值α(0<α<1)的乘积确定为所述预设阈值。举例来说,可以确定上述得到的指令序列:“123854710c6e0c6e0a3854546e0c6e546e0c6e0c38720a391238546e54710e012854136e”的字符总数是72,则可以设定预设数值是0.05(介于0~1之间),最终可以确定预设阈值为72*0.05≈4。其中,该预设数值也是可以是经验值。通过上述步骤,可以将相似度达到95%以上的函数指令序列的代码确定为病毒代码的变种。需要说明的是,本申请不限定采用何种恶意代码防护方案对恶意代码进行检测,例如,可以采用上面介绍的样本特征查杀(特征值扫描)、基于虚拟机查杀或者启发式查杀,另外还可以进行相似样本聚类。关于相似样本的聚类,具体地,可以是针对大量代码样本按照编辑距离(相似度)进行分类,在两个代码样本的函数指令序列的编辑距离小于预设阈值时,将这两个代码样本划分 到同一个类别中,从而实现大量代码样本的自动聚类。值得述及的是,本申请对于匹配算法也不作限制,例如,可以采用上面介绍的模糊匹配算法或者相似匹配算法等。图3为本申请另一实施例提供的判断病毒代码的方法的流程,包括:S201:对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构;上述应用程序可以是安装于移动终端上的应用程序。S202:解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的助记符序列;S203:确定提取到的所述助记符序列与预设的病毒代码的助记符序列之间的编辑距离;S204:判断确定的所述编辑距离是否小于预设阈值,若所述编辑距离小于预设阈值,则确定所述应用程序的虚拟机执行文件包含病毒代码。本实施例与上一实施例类似,作为一种替代的实施例,其区别在于:本实施例通过提取函数信息结构中的助记符序列,并利用助记符序列来确定待识别的应用程序代码与病毒代码之间的编辑距离,最终再根据编辑距离(相似度)来确定应用程序的虚拟机执行文件包含病毒代码。此外,关于如何确定上述预设阈值的内容可以参照上述实施例,在此不再予以赘述。可见,在上述实施例提供的方法中,通过对智能终端上安装的应用程序的虚拟机执行文件的分析和反编译,可以得到与该应用程序对应的反编译的函数信息结构中的函数指令序列(或助记符序列),并利用编辑距离算法确定提取到的所述函数指令序列(或助记符序列)与预设的病毒代码的函数指令序列(或助记符序列)之间的编辑距离,最终在确定的所述编辑距离小于预设阈值时,确定所述应用程序的虚拟机执行文件包含病毒代码,由此可以准确判断智能终端上的某个应用程序是否属于通过修改病毒代码引用(dex文件中)的字符串来达到免杀目的的程序,从而保障智能终端的安全。图4为本申请一实施例中提供的判断病毒代码的装置的模块图。该装置中 各单元的功能与上述方法中各步骤的功能类似,故该装置可以参照上述方法实施例的具体内容。该装置包括:反编译单元401,用于对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取单元402,用于解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的函数指令序列;编辑距离确定单元403,用于确定提取到的所述函数指令序列与预设的病毒代码的函数指令序列之间的编辑距离;病毒代码确定单元404,用于判断确定的所述编辑距离是否小于预设阈值,在所述编辑距离小于预设阈值时,确定所述应用程序的虚拟机执行文件包含病毒代码。通过上述装置,可以准确判断智能终端上的某个应用程序是否属于通过修改病毒代码引用(dex文件中)的字符串来达到免杀的目的的程序,从而确保智能终端的安全。关于上述预设阈值的确定可以包括多种方式,例如:通过人为根据经验设定该预设阈值是多少,或者根据一定的计算规则确定上述预设阈值。本申请实施例中,为了提高识别病毒代码的准确性,所述装置还包括:字符数确定单元,用于在确定所述应用程序的虚拟机执行文件包含病毒代码之前,确定提取到的所述函数指令序列的字符总数;预设阈值确定单元,用于将所述函数指令序列的字符总数与预设数值的乘积确定为所述预设阈值;其中,所述预设数值介于0~1之间。本申请实施例中,所述反编译单元102包括:信息结构体获得单元,用于根据虚拟机执行文件格式对虚拟机执行文件进行解析,得到每个类的函数信息结构体;函数信息结构获得单元,用于根据所述函数信息结构体中的字段,确定所述虚拟机执行文件的函数的位置及大小,得到所述反编译的函数信息结构。本申请实施例中,所述函数信息结构获得单元用于:解析所述函数信息结构体,得到指示虚拟机执行文件的函数位置的字节码数组字段以及指示虚拟机执行文件的函数大小的列表长度字段;根据所述字节码数组字段以及所述列表长度字段,确定所述虚拟机执行文件的函数的位置及大小。本申请另一实施例中,上述判断病毒代码的装置,包括:反编译单元401,用于对应用程序的虚拟机执行文件进行反编译,得到反编译的函数信息结构;上述应用程序可以是安装于移动终端上的应用程序。提取单元402,用于解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的助记符序列;编辑距离确定单元403,用于确定提取到的所述助记符序列与预设的病毒代码的函数指令序列之间的编辑距离;病毒代码确定单元404,用于判断确定的所述编辑距离是否小于预设阈值,在所述编辑距离小于预设阈值时,确定所述应用程序的虚拟机执行文件包含病毒代码。通过上述装置,可以准确判断智能终端上的某个应用程序是否属于通过修改病毒代码引用(dex文件中)的字符串来达到免杀的目的的程序,从而确保智能终端的安全。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒 体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1