一种提取样本代码特征的方法及装置与流程

文档序号:12786775阅读:316来源:国知局
本申请涉及智能终端安全
技术领域
:,尤其涉及一种提取样本代码特征的方法及装置。
背景技术
::随着科技发展,智能终端具有越来越多的功能。例如,人们的手机从传统的GSM、TDMA数字手机转向了拥有能够处理多媒体资源、提供网页浏览、电话会议、电子商务等多种信息服务的智能手机。然而,品种日益繁多的手机恶意代码攻击以及形势日益严峻的个人数据安全问题也随之而来,越来越多的手机病毒让智能手机用户饱受其苦。目前,对于各类智能终端的杀毒技术主要是基于应用程序的虚拟机执行文件的字符串进行查杀,将提取的字符串特征与预先建立的病毒库中的病毒特征进行匹配,若匹配发现待检测的应用程序的虚拟机执行文件的字符串包含病毒特征,则确定其为病毒代码。然而,现有技术中,病毒库中的病毒特征是通过人工对黑样本(即病毒样本)、白样本(即非病毒样本)进行分析得到的,由于人工分析方式在一定程度上效率较低,导致最终得到的病毒库中包含的病毒特征数量有限、并且准确性不高,从而导致杀毒应用的病毒查杀效果不佳。技术实现要素:本申请实施例提供一种克服上述问题或者至少部分地解决上述问题的提取样本代码特征的方法及装置。本申请实施例采用下述技术方案:一种提取样本代码特征的方法,包括:获取样本集合中包含的黑样本、白样本的虚拟机执行文件;对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取所述反编译的函数信息结构中的函数指令序列;逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。优选地,基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段,包括:将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。优选地,逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段之后,还包括:判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。优选地,判断所述指令序列片段包含的字符数是否超过预设值之前,还包括:确定所述预设值与所述函数指令序列的字符总数正相关。一种提取样本代码特征的方法,包括:获取样本集合中包含的黑样本、白样本的虚拟机执行文件;对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数 信息结构;提取所述反编译的函数信息结构中的助记符序列;逐一确定所述样本集合中的黑样本对应的助记符序列中包含的、且所述样本集合中的白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段。一种提取样本代码特征的装置,包括:获取单元,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;反编译单元,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取单元,用于提取所述反编译的函数信息结构中的函数指令序列;片段集合确定单元,用于逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;最优指令序列确定单元,用于基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。优选地,所述最优指令序列确定单元用于:将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。优选地,所述装置还包括:判断单元,用于判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。优选地,所述装置还包括:预设值确定单元,用于在判断所述指令序列片段包含的字符数是否超过预设值之前,确定所述预设值与所述函数指令序列的字符总数正相关。一种提取样本代码特征的装置,包括:获取单元,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;反编译单元,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取单元,用于提取所述反编译的函数信息结构中的助记符序列;片段集合确定单元,用于逐一确定所述样本集合中的黑样本对应的助记符序列中包含的、且所述样本集合中的白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;最优指令序列确定单元,用于基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请实施例通过基于样本集合中包含的黑样本、白样本进行反编译和分析,最终提取得到黑样本包含的、且白样本未包含的至少一个最优指令序列片段(或最优助记符序列片段),由于上述至少一个最优指令序列片段是黑样本普遍独有的特征(即病毒特征),从而可以利用该最优指令序列片段进行病毒代码的查杀。在上述过程中,相较于现有的通过人工分析黑、白样本的方式得到病毒特征的技术,其最终提取得到的最优指令序列片段(即病毒特征)准确性更高并且数量更多,这样,使得最终建立病毒库包含的病毒特征更加完善,进而提升杀毒应用的杀毒效果。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不 当限定。在附图中:图1为本申请一实施例中提供的提取样本代码特征的方法的流程图;图2为本申请实施例中对dex文件进行反编译得到的函数信息结构的示例;图3为本申请另一实施例中提供的提取样本代码特征的方法的流程图;图4为本申请一实施例中提供的提取样本代码特征的装置的模块图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以安卓(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文件中共用了很多类名称、常量字符串,使它的体积比较小,运行效率也比较高。以下结合附图,详细说明本申请各实施例提供的技术方案。图1为本申请一实施例中提供的提取样本代码特征的方法的流程,包括:S101:获取样本集合中包含的黑样本、白样本的虚拟机执行文件。在数据库中存储有多个代码的样本,由这些样本组成样本集合。并且,根据各个代码样本的性质,可以为每个代码样本贴上黑样本和白样本的标签。其中,黑样本表明该代码样本属于病毒代码(或恶意代码),白样本表明该代码样本属于非病毒代码(或非恶意代码)。病毒代码(Viruscode)是指通过存储介质或网络进行传播,在未经授权认证的情况下破坏操作系统完整性、窃取系统中未公开秘密信息的程序或代码。以手机为例,手机恶意代码是指针对手机、PDA等手持设备的恶意代码。手机恶意代码可以简单地划分为复制型恶意代码和非复制型恶意代码。其中复制型恶意代码主要包括病毒(Virus)、蠕虫(Worm),非复制型恶意代码主要包括特洛伊木马后门程序(TrojanHorse)、流氓软件(RogueSoftware)、恶意移动代码(MaliciousMobileCode)以及Rootkit程序等。值得一提的是,上述样本集合中包含的样本可以随着业务发展,不断地进行添加和更新。上述虚拟机执行文件例如是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文件进行的分析和处理,但是应该理解,对于system上的程序生成的dex文件,本申请的理论和操作同样适用。关于获取dex文件的方式,可以通过解析APK(AndroidPackage,Android安装包)获得。APK文件其实是zip格式的一个压缩包,但后缀名被修改为apk,通过UnZip解压后,就可以得到Dex文件。S102:对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构。对dex文件进行反编译(或称为:反汇编)有多种方式,这里示例性地给出两种方式,本领域技术人员可以在此基础上扩展出其他方式,这些方式均在本申请的保护范围之内:第一种方式:根据dex文件格式对dex文件进行解析,得到每个类的函数信息结构体;根据函数信息结构体中的字段,确定dex文件的函数的位置及大小,得到反编译的函数信息结构。其中,通过解析函数信息结构体,得到指示dex文件的函数位置的字节码数组字段以及指示dex文件的函数大小的列表长度字段,从而确定dex文件的函数的位置及大小。第二种方式:利用dex文件反编译工具,将dex文件反编译为虚拟机字节码。如前介绍的,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的助记符序列。S103:解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的函数指令序列。如上图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”。至此,可以得到上述样本集合中每个样本对应的函数指令序列。S104:逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合。基于得到的每个样本对应的函数指令序列,对应任意一个白样本和任意一个黑样本,可以确定到该黑样本的函数指令序列中包含的、但该白样本的函数指令序列中未包含的指令序列片段。举例而言,假设某白样本的函数指令序列是:“125438710c6e0c6e0a3854546e0c6e546e0c6e0c38720a391238546e54710e012854136e”;某黑样本的函数指令序列是:“125438710c6e0c6e0a3854546e0c6e307e5a590c38720a391238546e54710e012854136e”,从而可以确定上述黑样本的函数指令序列包含的、但上述白样本的函数指令序列未包含的指令序列片段为:“307e5a59”。通过上述方法可以依次找到任意一个黑样本的函数指令序列中包含的、但任意一个白样本的函数指令序列中没有包含的指令序列片段(数量很多),从而得到包含上述确定的若干指令序列片段的片段集合。值得提及的是,基于任意一个黑样本和任意一个白样本,可以确定出一个或多个上述指令序列片段,但是在实际应用过程中,若上述确定的序列片段若字符数(长度)太短,可能属于非常常见的现象。为此,上述步骤S104之后,还包括:判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。举例来说,若上述预设值可以为6,则指令序列片段“307e5a59”符合要求,指令序列片段“307e”不符合要求。本申请实施例中,判断所述指令序列片段包含的字符数是否超过预设值之前,上述方法还包括:确定所述预设值与所述函数指令序列的字符总数正相关。也就是,说上述预设值可以根据函数指令序列的字符总数来确定,字符总数越大,则该预设值可以相应的增大。举例来说,若确定的函数指令序列的字符总数是72,则可以设定预设值是72*0.1=7.2;若确定的函数指令序列的字符总数是100,则可以设定预设值是100*0.1=10。S105:基于上述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。本申请一实施例中,上述步骤S105可以具体包括:将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段。举例而言,通过统计上述片段集合中各个指令序列片段的出现次数(一般出现次数越多的指令序列片段,越有可能属于病毒代码所独有的特征),并按照出现次数进行从大到小的排序,可以最终将最终排序靠前的(比如前10位)的指令序列片段确定为最优指令序列片段(病毒代码独有的指令序列片段)。例如:通过排序发现:“38720a391238546e”的出现次数排名第一,可以确定为最优指令序列片段。当然,在本申请另一实施例中,上述步骤S105还可以具体包括:若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。例如,上述预设阈值是100次,若某个指令序列片段出现次数超过100次,则将其确定为最优指令序列片段。图3为本申请另一实施例中提供的提取样本代码特征的方法的流程图,在本申请替代的实施例中,上述提取的函数指令序列可以被助记符序列替代,同样可以实现本申请的技术方案。则,上述提取样本代码特征的方法包括如下步骤:S201:获取样本集合中包含的黑样本、白样本的虚拟机执行文件;S202:对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;S203:提取所述反编译的函数信息结构中的助记符序列;S204:逐一确定所述样本集合中的黑样本对应的助记符序列中包含的、且所述样本集合中的白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;S205:基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段。本申请实施例的方法通过基于样本集合中包含的黑样本、白样本进行反编 译和分析,最终提取得到黑样本包含的、且白样本未包含的至少一个最优指令序列片段(或最优助记符序列片段),由于上述至少一个最优指令序列片段是黑样本普遍独有的特征(即病毒特征),从而可以利用该最优指令序列片段进行病毒代码的查杀。在上述过程中,相较于现有的通过人工分析黑、白样本的方式得到病毒特征的技术,其最终提取得到的最优指令序列片段(即病毒特征)准确性更高并且数量更多,这样,使得最终建立的病毒特征库更加完善,进而提升杀毒应用的杀毒效果。图4为本申请一实施例中提供的提取样本代码特征的装置的模块图。基于上述方法的内容,该判断病毒代码的装置,包括:获取单元401,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;反编译单元402,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取单元403,用于提取所述反编译的函数信息结构中的函数指令序列;片段集合确定单元404,用于逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;最优指令序列确定单元405,用于基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。可以通过多种方式来确定上述至少一个最优指令序列片段,本申请实施例中列举两种方式。具体地,所述最优指令序列确定单元405用于:将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。本申请实施例中,所述装置还包括:判断单元,用于判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。通过该判断单元,可以将符合要求的指令序列片段归入到片段集合中,而将不符合要求的指令序列片段进行剔除。举例来说,若上述预设值可以为6,则指令序列片段“307e5a59”符合要求,指令序列片段“307e”不符合要求。本申请实施例中,所述装置还包括:预设值确定单元,用于在判断所述指令序列片段包含的字符数是否超过预设值之前,确定所述预设值与所述函数指令序列的字符总数正相关。本申请实施例的装置通过基于样本集合中包含的黑样本、白样本进行反编译和分析,最终提取得到黑样本包含的、且白样本未包含的至少一个最优指令序列片段(或最优助记符序列片段),由于上述至少一个最优指令序列片段是黑样本普遍独有的特征(即病毒特征),从而可以利用该最优指令序列片段进行病毒代码的查杀。在上述过程中,相较于现有的通过人工分析黑、白样本的方式得到病毒特征的技术,其最终提取得到的最优指令序列片段(即病毒特征)准确性更高并且数量更多,这样,使得最终建立的病毒特征库更加完善,进而提升杀毒应用的杀毒效果。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、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