CN106909839B - 一种提取样本代码特征的方法及装置 - Google Patents

一种提取样本代码特征的方法及装置 Download PDF

Info

Publication number
CN106909839B
CN106909839B CN201510969663.9A CN201510969663A CN106909839B CN 106909839 B CN106909839 B CN 106909839B CN 201510969663 A CN201510969663 A CN 201510969663A CN 106909839 B CN106909839 B CN 106909839B
Authority
CN
China
Prior art keywords
instruction sequence
segment
sample
contained
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510969663.9A
Other languages
English (en)
Other versions
CN106909839A (zh
Inventor
杨康
陈卓
唐海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Hongxiang Technical Service Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510969663.9A priority Critical patent/CN106909839B/zh
Publication of CN106909839A publication Critical patent/CN106909839A/zh
Application granted granted Critical
Publication of CN106909839B publication Critical patent/CN106909839B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请公开了一种提取样本代码特征的方法及装置。其中的方法包括:获取样本集合中包含的黑样本、白样本的虚拟机执行文件;对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;提取所述反编译的函数信息结构中的函数指令序列;逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。通过上述方案,本申请可以使得最终建立的病毒库包含的病毒特征更加完善,进而提升杀毒应用的杀毒效果。

Description

一种提取样本代码特征的方法及装置
技术领域
本申请涉及智能终端安全技术领域,尤其涉及一种提取样本代码特征的方法及装置。
背景技术
随着科技发展,智能终端具有越来越多的功能。例如,人们的手机从传统的GSM、TDMA数字手机转向了拥有能够处理多媒体资源、提供网页浏览、电话会议、电子商务等多种信息服务的智能手机。然而,品种日益繁多的手机恶意代码攻击以及形势日益严峻的个人数据安全问题也随之而来,越来越多的手机病毒让智能手机用户饱受其苦。
目前,对于各类智能终端的杀毒技术主要是基于应用程序的虚拟机执行文件的字符串进行查杀,将提取的字符串特征与预先建立的病毒库中的病毒特征进行匹配,若匹配发现待检测的应用程序的虚拟机执行文件的字符串包含病毒特征,则确定其为病毒代码。然而,现有技术中,病毒库中的病毒特征是通过人工对黑样本(即病毒样本)、白样本(即非病毒样本)进行分析得到的,由于人工分析方式在一定程度上效率较低,导致最终得到的病毒库中包含的病毒特征数量有限、并且准确性不高,从而导致杀毒应用的病毒查杀效果不佳。
发明内容
本申请实施例提供一种克服上述问题或者至少部分地解决上述问题的提取样本代码特征的方法及装置。
本申请实施例采用下述技术方案:
一种提取样本代码特征的方法,包括:
获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取所述反编译的函数信息结构中的函数指令序列;
逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;
基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。
优选地,基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段,包括:
将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,
若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。
优选地,逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段之后,还包括:
判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。
优选地,判断所述指令序列片段包含的字符数是否超过预设值之前,还包括:
确定所述预设值与所述函数指令序列的字符总数正相关。
一种提取样本代码特征的方法,包括:
获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取所述反编译的函数信息结构中的助记符序列;
逐一确定所述样本集合中的黑样本对应的助记符序列中包含的、且所述样本集合中的白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;
基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段。
一种提取样本代码特征的装置,包括:
获取单元,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
反编译单元,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取单元,用于提取所述反编译的函数信息结构中的函数指令序列;
片段集合确定单元,用于逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;
最优指令序列确定单元,用于基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。
优选地,所述最优指令序列确定单元用于:
将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,
若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。
优选地,所述装置还包括:
判断单元,用于判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。
优选地,所述装置还包括:
预设值确定单元,用于在判断所述指令序列片段包含的字符数是否超过预设值之前,确定所述预设值与所述函数指令序列的字符总数正相关。
一种提取样本代码特征的装置,包括:
获取单元,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
反编译单元,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取单元,用于提取所述反编译的函数信息结构中的助记符序列;
片段集合确定单元,用于逐一确定所述样本集合中的黑样本对应的助记符序列中包含的、且所述样本集合中的白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;
最优指令序列确定单元,用于基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本申请实施例通过基于样本集合中包含的黑样本、白样本进行反编译和分析,最终提取得到黑样本包含的、且白样本未包含的至少一个最优指令序列片段(或最优助记符序列片段),由于上述至少一个最优指令序列片段是黑样本普遍独有的特征(即病毒特征),从而可以利用该最优指令序列片段进行病毒代码的查杀。在上述过程中,相较于现有的通过人工分析黑、白样本的方式得到病毒特征的技术,其最终提取得到的最优指令序列片段(即病毒特征)准确性更高并且数量更多,这样,使得最终建立病毒库包含的病毒特征更加完善,进而提升杀毒应用的杀毒效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一实施例中提供的提取样本代码特征的方法的流程图;
图2为本申请实施例中对dex文件进行反编译得到的函数信息结构的示例;
图3为本申请另一实施例中提供的提取样本代码特征的方法的流程图;
图4为本申请一实施例中提供的提取样本代码特征的装置的模块图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以安卓(Android)操作系统为例,包括应用程序层(app层)和系统框架层(framework层),至于从功能划分上有可能包括的其他层本申请则不作讨论。其中,通常app层可以理解为上层,负责与用户交互的界面,例如应用程序维护、以及点击页面时识别不同种类的点击内容从而显示不同的上下文菜单等。通常framework层作为中间层,这一层的主要职责是,将app层获得的用户请求,如启动用用程序、点击链接、点击保存图片之类,转发往下层去;将下层处理好的内容,或者通过消息,或者通过中间代理类,来分发至上层,对用户展现出来。
Dalvik是用于Android平台的Java虚拟机。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。Dalvik虚拟机可以支持已转换为dex(Dalvik Executable)格式的Java应用程序的运行,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
可见,在Android系统中,dex文件是可以直接在Dalvik虚拟机(Dalvik VM)中加载运行的虚拟机执行文件。通过ADT(Android Development Tools),经过复杂的编译,可以把java源代码转换为dex文件。dex文件是针对嵌入式系统优化的结果,Dalvik虚拟机的指令码并不是标准的Java虚拟机指令码,而是使用了自己独有的一套指令集。dex文件中共用了很多类名称、常量字符串,使它的体积比较小,运行效率也比较高。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一实施例中提供的提取样本代码特征的方法的流程,包括:
S101:获取样本集合中包含的黑样本、白样本的虚拟机执行文件。
在数据库中存储有多个代码的样本,由这些样本组成样本集合。并且,根据各个代码样本的性质,可以为每个代码样本贴上黑样本和白样本的标签。其中,黑样本表明该代码样本属于病毒代码(或恶意代码),白样本表明该代码样本属于非病毒代码(或非恶意代码)。
病毒代码(Virus code)是指通过存储介质或网络进行传播,在未经授权认证的情况下破坏操作系统完整性、窃取系统中未公开秘密信息的程序或代码。以手机为例,手机恶意代码是指针对手机、PDA等手持设备的恶意代码。手机恶意代码可以简单地划分为复制型恶意代码和非复制型恶意代码。其中复制型恶意代码主要包括病毒(Virus)、蠕虫(Worm),非复制型恶意代码主要包括特洛伊木马后门程序(Trojan Horse)、流氓软件(RogueSoftware)、恶意移动代码(Malicious Mobile Code)以及Rootkit程序等。值得一提的是,上述样本集合中包含的样本可以随着业务发展,不断地进行添加和更新。
上述虚拟机执行文件例如是dex文件。如前所述,Android操作系统包括应用程序层(app层)和系统框架层(framework层),本申请重点在于对app层的研究和改进。但是,本领域技术人员理解,当Android启动时,Dalvik VM监视所有的程序(APK文件)和框架,并且为它们创建一个依存关系树。DalvikVM通过这个依存关系树来为每个程序优化代码并存储在Dalvik缓存(dalvik-cache)中。这样,所有程序在运行时都会使用优化过的代码。当一个程序(或者框架库)发生变更,Dalvik VM将会重新优化代码并且再次将其存在缓存中。在cache/dalvik-cache是存放system上的程序生成的dex文件,而data/dalvik-cache则是存放data/app生成的dex文件。也就是,本申请重点在于对data/app生成的dex文件进行的分析和处理,但是应该理解,对于system上的程序生成的dex文件,本申请的理论和操作同样适用。
关于获取dex文件的方式,可以通过解析APK(Android Package,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、IDA Pro、androguard、dex2jar、010Editor等。
可见,通过对dex文件的反编译,可以得到反编译的所有函数信息结构。其中,函数信息结构包含函数执行代码,本申请实施例中,是由虚拟机指令序列和虚拟机助记符序列构成的,如下面的例子,由Dalvik VM的指令序列和Dalvik VM的助记符序列构成函数信息结构。
例如,图2所示的是本申请实施例中对dex文件进行反编译得到的函数信息结构的示例。可见,dex文件被反编译成Dalvik VM的指令序列和Dalvik VM的助记符序列。
S103:解析所述反编译的函数信息结构,提取所述反编译的函数信息结构中的函数指令序列。
如上图2的例子,在反编译得到的函数信息结构中,机器码字段中的每一行的前2个数字是指令序列(上例子左侧被圈部分),而指令序列对应的部分为助记符(上例子右侧,部分被圈,未全部选择)。助记符主要是为了方便用户交流和代码编写。如上例子,dex文件经过反编译就可以得到函数的指令序列为:“12 54 38 71 0c 6e 0c 6e 0a 38 54 54 6e0c 6e 54 6e 0c 6e 0c 38 72 0a 39 1238 54 6e 54 71 0e 01 28 54 13 6e”。
助记符序列为:
“const/4iget-object if-eqz invoke-static move-result-object invoke-virtual move-result-object invoke-virtual move-result if-eqz iget-objectiget-object invoke-virtual move-result-object invoke-virtual iget-objectinvoke-virtual move-result-object invoke-virtual move-result-object if-eqzinvoke-interface move-result if-nez const/4if-eqz iget-object invoke-virtualiget-object invoke-static return-void move goto iget-object const/16invoke-virtual”。
至此,可以得到上述样本集合中每个样本对应的函数指令序列。
S104:逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合。
基于得到的每个样本对应的函数指令序列,对应任意一个白样本和任意一个黑样本,可以确定到该黑样本的函数指令序列中包含的、但该白样本的函数指令序列中未包含的指令序列片段。举例而言,假设某白样本的函数指令序列是:“12 54 38 71 0c 6e 0c 6e0a 38 54 54 6e 0c 6e 54 6e 0c 6e 0c 38 72 0a 39 12 3854 6e 54 71 0e 01 28 5413 6e”;某黑样本的函数指令序列是:“12 54 38 71 0c 6e0c 6e 0a 38 54 54 6e 0c 6e30 7e 5a 59 0c 38 72 0a 39 12 38 54 6e 54 71 0e 01 2854 13 6e”,从而可以确定上述黑样本的函数指令序列包含的、但上述白样本的函数指令序列未包含的指令序列片段为:“30 7e 5a 59”。
通过上述方法可以依次找到任意一个黑样本的函数指令序列中包含的、但任意一个白样本的函数指令序列中没有包含的指令序列片段(数量很多),从而得到包含上述确定的若干指令序列片段的片段集合。值得提及的是,基于任意一个黑样本和任意一个白样本,可以确定出一个或多个上述指令序列片段,但是在实际应用过程中,若上述确定的序列片段若字符数(长度)太短,可能属于非常常见的现象。为此,上述步骤S104之后,还包括:判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。举例来说,若上述预设值可以为6,则指令序列片段“30 7e 5a 59”符合要求,指令序列片段“307e”不符合要求。
本申请实施例中,判断所述指令序列片段包含的字符数是否超过预设值之前,上述方法还包括:确定所述预设值与所述函数指令序列的字符总数正相关。也就是,说上述预设值可以根据函数指令序列的字符总数来确定,字符总数越大,则该预设值可以相应的增大。举例来说,若确定的函数指令序列的字符总数是72,则可以设定预设值是72*0.1=7.2;若确定的函数指令序列的字符总数是100,则可以设定预设值是100*0.1=10。
S105:基于上述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。
本申请一实施例中,上述步骤S105可以具体包括:
将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段。
举例而言,通过统计上述片段集合中各个指令序列片段的出现次数(一般出现次数越多的指令序列片段,越有可能属于病毒代码所独有的特征),并按照出现次数进行从大到小的排序,可以最终将最终排序靠前的(比如前10位)的指令序列片段确定为最优指令序列片段(病毒代码独有的指令序列片段)。例如:通过排序发现:“38 72 0a 39 12 38 546e”的出现次数排名第一,可以确定为最优指令序列片段。
当然,在本申请另一实施例中,上述步骤S105还可以具体包括:
若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。例如,上述预设阈值是100次,若某个指令序列片段出现次数超过100次,则将其确定为最优指令序列片段。
图3为本申请另一实施例中提供的提取样本代码特征的方法的流程图,在本申请替代的实施例中,上述提取的函数指令序列可以被助记符序列替代,同样可以实现本申请的技术方案。则,上述提取样本代码特征的方法包括如下步骤:
S201:获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
S202:对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
S203:提取所述反编译的函数信息结构中的助记符序列;
S204:逐一确定所述样本集合中的黑样本对应的助记符序列中包含的、且所述样本集合中的白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;
S205:基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段。
本申请实施例的方法通过基于样本集合中包含的黑样本、白样本进行反编译和分析,最终提取得到黑样本包含的、且白样本未包含的至少一个最优指令序列片段(或最优助记符序列片段),由于上述至少一个最优指令序列片段是黑样本普遍独有的特征(即病毒特征),从而可以利用该最优指令序列片段进行病毒代码的查杀。在上述过程中,相较于现有的通过人工分析黑、白样本的方式得到病毒特征的技术,其最终提取得到的最优指令序列片段(即病毒特征)准确性更高并且数量更多,这样,使得最终建立的病毒特征库更加完善,进而提升杀毒应用的杀毒效果。
图4为本申请一实施例中提供的提取样本代码特征的装置的模块图。基于上述方法的内容,该判断病毒代码的装置,包括:
获取单元401,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
反编译单元402,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取单元403,用于提取所述反编译的函数信息结构中的函数指令序列;
片段集合确定单元404,用于逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;
最优指令序列确定单元405,用于基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段。
可以通过多种方式来确定上述至少一个最优指令序列片段,本申请实施例中列举两种方式。具体地,所述最优指令序列确定单元405用于:
将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,
若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。
本申请实施例中,所述装置还包括:
判断单元,用于判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。通过该判断单元,可以将符合要求的指令序列片段归入到片段集合中,而将不符合要求的指令序列片段进行剔除。举例来说,若上述预设值可以为6,则指令序列片段“30 7e 5a 59”符合要求,指令序列片段“30 7e”不符合要求。
本申请实施例中,所述装置还包括:预设值确定单元,用于在判断所述指令序列片段包含的字符数是否超过预设值之前,确定所述预设值与所述函数指令序列的字符总数正相关。
本申请实施例的装置通过基于样本集合中包含的黑样本、白样本进行反编译和分析,最终提取得到黑样本包含的、且白样本未包含的至少一个最优指令序列片段(或最优助记符序列片段),由于上述至少一个最优指令序列片段是黑样本普遍独有的特征(即病毒特征),从而可以利用该最优指令序列片段进行病毒代码的查杀。在上述过程中,相较于现有的通过人工分析黑、白样本的方式得到病毒特征的技术,其最终提取得到的最优指令序列片段(即病毒特征)准确性更高并且数量更多,这样,使得最终建立的病毒特征库更加完善,进而提升杀毒应用的杀毒效果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种提取样本代码特征的方法,其特征在于,包括:
获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取所述反编译的函数信息结构中的函数指令序列;
逐一确定所述样本集合中的任意一个黑样本对应的函数指令序列中包含的、且所述样本集合中的任意一个白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;
基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段以作为病毒特征来建立病毒特征库。
2.如权利要求1所述的方法,其特征在于,基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段,包括:
将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,
若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。
3.如权利要求1所述的方法,其特征在于,逐一确定所述样本集合中的黑样本对应的函数指令序列中包含的、且所述样本集合中的白样本对应的函数指令序列中未包含的指令序列片段之后,还包括:
判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。
4.如权利要求3所述的方法,其特征在于,判断所述指令序列片段包含的字符数是否超过预设值之前,还包括:
确定所述预设值与所述函数指令序列的字符总数正相关。
5.一种提取样本代码特征的方法,其特征在于,包括:
获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取所述反编译的函数信息结构中的助记符序列;
逐一确定所述样本集合中的任意一个黑样本对应的助记符序列中包含的、且所述样本集合中的任意一个白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;
基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段以作为病毒特征来建立病毒特征库。
6.一种提取样本代码特征的装置,其特征在于,包括:
获取单元,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
反编译单元,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取单元,用于提取所述反编译的函数信息结构中的函数指令序列;
片段集合确定单元,用于逐一确定所述样本集合中的任意一个黑样本对应的函数指令序列中包含的、且所述样本集合中的任意一个白样本对应的函数指令序列中未包含的指令序列片段,得到包含上述指令序列片段的片段集合;
最优指令序列确定单元,用于基于所述片段集合中包含的指令序列片段,确定至少一个最优指令序列片段以作为病毒特征来建立病毒特征库。
7.如权利要求6所述的装置,其特征在于,所述最优指令序列确定单元用于:
将所述片段集合中包含的指令序列片段按照出现次数从大到小进行排序,并将排序靠前的至少一个指令序列片段确定为最优指令序列片段;或,
若所述片段集合中包含的指令序列片段的出现次数超过预设阈值,则将该指令序列片段确定为最优指令序列片段。
8.如权利要求6所述的装置,其特征在于,所述装置还包括:
判断单元,用于判断所述指令序列片段包含的字符数是否超过预设值,若是,则将其归入片段集合中。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
预设值确定单元,用于在判断所述指令序列片段包含的字符数是否超过预设值之前,确定所述预设值与所述函数指令序列的字符总数正相关。
10.一种提取样本代码特征的装置,其特征在于,包括:
获取单元,用于获取样本集合中包含的黑样本、白样本的虚拟机执行文件;
反编译单元,用于对黑、白样本对应的所述虚拟机执行文件进行反编译,得到反编译的函数信息结构;
提取单元,用于提取所述反编译的函数信息结构中的助记符序列;
片段集合确定单元,用于逐一确定所述样本集合中的任意一个黑样本对应的助记符序列中包含的、且所述样本集合中的任意一个白样本对应的助记符序列中未包含的助记符序列片段,得到包含上述助记符序列片段的片段集合;
最优指令序列确定单元,用于基于所述片段集合中包含的助记符序列片段,确定至少一个最优助记符序列片段以作为病毒特征来建立病毒特征库。
CN201510969663.9A 2015-12-22 2015-12-22 一种提取样本代码特征的方法及装置 Active CN106909839B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510969663.9A CN106909839B (zh) 2015-12-22 2015-12-22 一种提取样本代码特征的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510969663.9A CN106909839B (zh) 2015-12-22 2015-12-22 一种提取样本代码特征的方法及装置

Publications (2)

Publication Number Publication Date
CN106909839A CN106909839A (zh) 2017-06-30
CN106909839B true CN106909839B (zh) 2020-04-17

Family

ID=59199905

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510969663.9A Active CN106909839B (zh) 2015-12-22 2015-12-22 一种提取样本代码特征的方法及装置

Country Status (1)

Country Link
CN (1) CN106909839B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107632901A (zh) * 2017-09-25 2018-01-26 青岛海信移动通信技术股份有限公司 一种应用程序运行异常的自修复方法及装置
CN109725904B (zh) * 2017-10-31 2021-10-22 中国科学院微电子研究所 一种低功耗程序指令编译方法及系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101604364A (zh) * 2009-07-10 2009-12-16 珠海金山软件股份有限公司 基于文件指令序列的计算机恶意程序分类系统和分类方法
CN101848092A (zh) * 2009-03-25 2010-09-29 华为技术有限公司 恶意代码检测方法和装置
CN101923617A (zh) * 2010-08-18 2010-12-22 奇智软件(北京)有限公司 一种基于云的样本数据库动态维护方法
CN102819697A (zh) * 2011-12-26 2012-12-12 哈尔滨安天科技股份有限公司 一种基于线程反编译的多平台恶意代码检测方法和系统
CN103761475A (zh) * 2013-12-30 2014-04-30 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN103761476A (zh) * 2013-12-30 2014-04-30 北京奇虎科技有限公司 特征提取的方法及装置
CN103902911A (zh) * 2014-04-16 2014-07-02 南京大学 一种基于程序结构特征的恶意程序检测方法
CN103902910A (zh) * 2013-12-30 2014-07-02 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN104077528A (zh) * 2014-06-25 2014-10-01 珠海市君天电子科技有限公司 病毒检测方法、装置以及终端
CN104318161A (zh) * 2014-11-18 2015-01-28 北京奇虎科技有限公司 一种安卓样本的病毒检测方法及装置
CN104978526A (zh) * 2015-06-30 2015-10-14 北京奇虎科技有限公司 病毒特征的提取方法及装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848092A (zh) * 2009-03-25 2010-09-29 华为技术有限公司 恶意代码检测方法和装置
CN101604364A (zh) * 2009-07-10 2009-12-16 珠海金山软件股份有限公司 基于文件指令序列的计算机恶意程序分类系统和分类方法
CN101923617A (zh) * 2010-08-18 2010-12-22 奇智软件(北京)有限公司 一种基于云的样本数据库动态维护方法
CN102819697A (zh) * 2011-12-26 2012-12-12 哈尔滨安天科技股份有限公司 一种基于线程反编译的多平台恶意代码检测方法和系统
CN103761475A (zh) * 2013-12-30 2014-04-30 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN103761476A (zh) * 2013-12-30 2014-04-30 北京奇虎科技有限公司 特征提取的方法及装置
CN103902910A (zh) * 2013-12-30 2014-07-02 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN103902911A (zh) * 2014-04-16 2014-07-02 南京大学 一种基于程序结构特征的恶意程序检测方法
CN104077528A (zh) * 2014-06-25 2014-10-01 珠海市君天电子科技有限公司 病毒检测方法、装置以及终端
CN104318161A (zh) * 2014-11-18 2015-01-28 北京奇虎科技有限公司 一种安卓样本的病毒检测方法及装置
CN104978526A (zh) * 2015-06-30 2015-10-14 北京奇虎科技有限公司 病毒特征的提取方法及装置

Also Published As

Publication number Publication date
CN106909839A (zh) 2017-06-30

Similar Documents

Publication Publication Date Title
US10114946B2 (en) Method and device for detecting malicious code in an intelligent terminal
WO2015101097A1 (zh) 特征提取的方法及装置
US20200193024A1 (en) Detection Of Malware Using Feature Hashing
JP6126672B2 (ja) 悪性コード検出方法及びシステム
Kapratwar et al. Static and dynamic analysis of android malware
US20140082729A1 (en) System and method for analyzing repackaged application through risk calculation
Rana et al. Evaluation of tree based machine learning classifiers for android malware detection
WO2015101042A1 (zh) 检测智能终端中恶意代码的方法及装置
CN107506256B (zh) 一种崩溃数据监控的方法和装置
JP2021523434A (ja) マルウェア検出
Han et al. Malware classification methods using API sequence characteristics
US20210342447A1 (en) Methods and apparatus for unknown sample classification using agglomerative clustering
CN103473104A (zh) 一种基于关键词上下文频率矩阵的应用重打包辨别方法
CN112148305A (zh) 一种应用检测方法、装置、计算机设备和可读存储介质
US11916937B2 (en) System and method for information gain for malware detection
CN106709350B (zh) 一种病毒检测方法及装置
CN106909839B (zh) 一种提取样本代码特征的方法及装置
US20160134652A1 (en) Method for recognizing disguised malicious document
CN106909841A (zh) 一种判断病毒代码的方法及装置
CN107085684B (zh) 程序特征的检测方法和装置
US9646157B1 (en) Systems and methods for identifying repackaged files
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
KR102427782B1 (ko) 인접 행렬 기반의 악성 코드 탐지 및 분류 장치와 악성 코드 탐지 및 분류 방법
Feichtner et al. Obfuscation-resilient code recognition in Android apps
Liang et al. Automatic benchmark generation framework for malware detection

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211201

Address after: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, high tech Zone, Binhai New Area, Tianjin

Patentee after: 3600 Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230710

Address after: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Beijing Hongxiang Technical Service Co.,Ltd.

Address before: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, high tech Zone, Binhai New Area, Tianjin

Patentee before: 3600 Technology Group Co.,Ltd.

TR01 Transfer of patent right