CN101281571B - 防御未知病毒程序的方法 - Google Patents

防御未知病毒程序的方法 Download PDF

Info

Publication number
CN101281571B
CN101281571B CN200810301233XA CN200810301233A CN101281571B CN 101281571 B CN101281571 B CN 101281571B CN 200810301233X A CN200810301233X A CN 200810301233XA CN 200810301233 A CN200810301233 A CN 200810301233A CN 101281571 B CN101281571 B CN 101281571B
Authority
CN
China
Prior art keywords
program
virus
data
detected
behavior
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.)
Expired - Fee Related
Application number
CN200810301233XA
Other languages
English (en)
Other versions
CN101281571A (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.)
Photon (Beijing) International Information Engineering Technology Research Co., Ltd.
Original Assignee
白杰
李薇
鲁征宇
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 白杰, 李薇, 鲁征宇 filed Critical 白杰
Priority to CN200810301233XA priority Critical patent/CN101281571B/zh
Publication of CN101281571A publication Critical patent/CN101281571A/zh
Application granted granted Critical
Publication of CN101281571B publication Critical patent/CN101281571B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种防御未知病毒程序的方法,包括:获取待检测程序的运行特征数据;根据获得的所述待检测程序的运行特征数据或运行特征数据集合,结合预置的病毒程序的病毒运行特征数据或病毒运行特征数据集合,判断所述待检测程序是否为病毒程序。本发明采用检测程序行为数据和程序的运行特征数据的方式识别未知病毒。

Description

防御未知病毒程序的方法
技术领域
本发明涉及一种防御未知病毒程序的方法,特别是涉及一种针对未知病毒程序防御的方法。
背景技术
随着计算机应用技术的发展,病毒也加速的发展,原有的特征码技术已经无法单独应对现在流行的计算机病毒。近两年采用依据程序行为判断一个程序是否是病毒的技术也被广泛的应用。这种技术的原理就是先探测被监控程序的行为,然后依据这个程序的行为和预先设置的程序有害行为数据库中存储的比较,从而判断被监控的程序是否为病毒。
例如申请号为200510007682.X的中国发明专利公开了一种基于程序行为分析的计算机防护方法。该方法是指:设置一个程序行为知识库和一个攻击识别规则库,所述程序行为知识库存放有已知程序的正常行为数据,例如操作系统内的某一个正常的程序或者某一个第三方的应用程序的正常行为数据;所述攻击识别规则库存放有病毒的攻击行为数据;在具体的应用中对于已知的程序,先监控该已知程序的行为,然后将该已知程序的行为和上述的程序行为知识库进行比较,判断该已知程序是否受到了非法攻击。在具体应用中对于未知的程序,监控该未知程序的行为,将该行为与上述攻击识别规则库进行比较,判定是否为有害程序。该方法监控程序的方法仅仅是采用勾挂程序系统API调用的行为来监控一个程序是否为病毒程序或者受到病毒感染,因此程序行为数据的比较仅限于系统API调用,由于许多的正常的应用程序也难免涉及到上述攻击识别规则库里存放的API调用数据,例如,如果将采用中断写磁盘某个特定区域的操作作为病毒行为,则一个采用这种操作的正常程序也会被视为病毒。因此,仅仅依靠将待检测程序的行为数据与某种规则数据库或者某种危害行为数据库进行判断待检测程序是否为病毒程序,这样容易把正常程序也误判断成为病毒程序。
从另一个角度来说,申请号为200510007682.X的中国发明专利所涉及到的攻击识别规则库,依照此发明专利的说明书记载,其中存储的都是病毒程序的攻击破坏性行为,都是直接对系统具有攻击性的危害的行为。可是在现实中,有许多程序的指令或者这些程序的指令集合虽然不具有直接的攻击性行为,但是仍然给系统带来危害性。例如:程序的一段死循环指令。还有一些程序虽然本身没有攻击性指令行为,但是通过调用其他的指令组合达到了直接的攻击效果,例如:某一个程序调用已知的或者未知的系统漏洞或者系统后门进行有针对性的操作,就会产生直接的攻击效果。程序的调用,即是很常见的也是很正常的技术手段,而正常的程序很难免要使用程序的调用,如果将程序的调用行为存储到所述攻击识别规则库中,将造成大面积的正常程序误判断成为病毒程序。如果将程序的调用行为不存储到所述攻击识别规则库中,可能会造成对病毒程序的漏判断。
现实中,有人提出可以采用病毒行为感染实验的方法诊断一个待检测程序是否为病毒程序。该方法首先运行待检测程序,再运行一些确切知道不带毒的正常程序,然后观察这些正常程序的长度和校验和是否发生变化,如果发现不带毒的正常程序出现程序增长、缩短,或者校验和发生变化,就可判断处该待检测程序为病毒程序。
现实中,还有人提出对于加密、变形等采用了加壳技术的病毒体先对其进行解密,还原病毒体到原始状态,即病毒体采用了加壳技术以前的状态,这样的做法会增大对病毒识别的难度,并且增加了许多对病毒体解密失败的事件,另外额外的增加了系统的负担。
发明内容
鉴于上述问题,本发明要解决的技术问题是提供一种减少误判断和漏判断的防御未知病毒程序的方法。
为了解决上述的问题,本发明的目的是通过以下技术方案实现的:
一种防御未知病毒程序的方法,包括:
获取待检测程序的运行特征数据;根据获得的所述待检测程序的运行特征数据或运行特征数据集合,结合预置的病毒程序的病毒运行特征数据或病毒运行特征数据集合,判断所述待检测程序是否为病毒程序。
进一步,所述方法还可以包括:
获取待检测程序的行为数据或行为数据集合;根据获得的所述待检测程序的行为数据或行为数据集合,结合预置的病毒程序的行为数据或者行为数据集合,判断所述待检测程序是否为病毒程序。
所述方法还可以包括:
建立程序行为经验库,用于存储病毒程序的行为数据或者行为数据的集合,以及存储病毒程序从行为数据到结果数据的过程表达式,所述过程表达式包括行为数据和结果数据以及从行为到结果的对应关系数据;以及,将获得的所述待检测程序的行为数据或行为数据集合与所述程序行为经验库中的行为数据进行比较,获得所述过程表达式,通过所述过程表达式判断所述待检测程序是否为病毒程序。
所述方法还可以包括,按照下列步骤建立病毒程序运行特征经验库:
获得已知病毒程序运行过程中的内存数据;记录已知病毒程序运行过程中相同或相似部分的内存数据或内存数据的集合以及按序排列所述相同或相似部分的内存数据片段,将所述排列后的内存数据片段存储并形成病毒程序运行特征经验库;以及,将对系统进行恶意操作的指令或指令集在被执行过程中的内存数据存储到所述病毒程序运行特征经验库中,利用所述特征经验库中的数据判断所述待检测程序是否为病毒程序。
所述方法还可以包括,按照下列步骤建立原则库:
将已知病毒程序的破坏性操作行为与该破坏性操作行为对应的运行结果,以及病毒程序运行特征经验库中存储的数据形成对应关系表达式,将所述对应关系表达式储存到原则库中;把对系统进行恶意操作的指令或指令集与对应的指令或指令集执行后的结果,以及该指令或指令集被执行过程中的内存数据形成对应关系表达式,将所述对应关系表达式储存到原则库中;利用所述原则库中的数据判断所述待检测程序是否为病毒程序。
所述方法还可以包括:
获得已知病毒程序的破坏性行为数据,将待检测程序的行为数据与建立的所述程序行为经验库中存储的数据进行比较,判断所述程序行为经验库中是否存储有与待检测程序的行为数据符合度大于指定的阀值;根据上述比较的结果,按照预置的判定规则,判断待检测程序是否为病毒程序。
所述方法还可以包括:
获取待检测程序运行过程中的特征数据,将获取的所述待检测程序运行过程中的特征数据与建立的病毒程序运行特征经验库中存储的数据进行比较,判断病毒程序运行特征经验库中是否存储有与待检测程序运行过程中的特征数据符合度大于指定的阀值;根据上述比较的结果,按照预置的判定规则,判断待检测程序是否为病毒程序。
所述方法还可以包括,按照下列条件定义所述预置的判定规则:
获取待检测程序的相应数据分别与所述程序行为经验库中存储的数据和所述病毒程序运行特征经验库中存储的数据进行比较,根据比较后的结果,确定是否需要再与建立的原则库进行比较,判断待检测程序是否为病毒程序。
与现有技术相比,本发明至少具有以下的优点:
本实施例所述防御未知病毒程序的方法通过技术人员分析已知病毒程序的破坏方式,按照不同的破坏方式进行不同种类的划分,将采用相同或者相似破坏方式的病毒程序归纳到同一种类。然后技术人员按照病毒程序种类的划分,分析每一种类病毒程序在运行过程中的相同或相似之处。例如,技术人员分析每一种类病毒程序运行过程中的内存数据,将这些内存数据具有相同或相似的部分提取出来并且进行存储,形成病毒程序运行特征经验库。设置一个虚拟环境或者可以采用任何的公知技术将待检测程序运行过程中的内存数据或者待检测程序运行过程中具有唯一特征的指纹特征提取出来,并且与所述病毒程序运行特征经验库进行比较。
技术人员通过分析已知病毒程序的行为特征,将这些行为特征进行存储,形成程序行为经验库。建立原则库,将已知病毒程序的破坏性操作行为与该破坏性操作行为对应的运行结果,以及病毒程序运行特征经验库中存储的数据形成对应关系表达式,将所述对应关系表达式储存到原则库中;把对系统进行恶意操作的指令或指令集与对应的指令或指令集执行后的结果,以及该指令或指令集被执行过程中的内存数据形成对应关系表达式,将所述对应关系表达式储存到原则库中。
技术人员通过获取待检测程序的行为数据或行为数据集合,并且与所述程序行为经验库进行比较。根据以上两次比较的结果,确定所述待检测程序是否为病毒程序。如果两次比较的结果不一致,根据获得的待检测程序的相应数据与建立的原则库进行比较,从而更进一步确定待检测程序是否为病毒程序。将获得的待检测程序的行为数据与建立的原则库中的对应关系表达式相应部分进行比较,对比较成功的次数进行计数;将获得的待检测程序的运行过程中的特征数据或者指纹特征与建立的原则库中的对应关系表达式相应部分进行比较,对比较成功的次数进行计数;任意一次对比较成功的次数等于或者超过设定的阀值时,判定所述待检测程序为病毒程序。
根据以上的技术过程,不但可以极大的降低将正常程序误判断为病毒程序,从而还可以极大的提高对未知病毒的识别率,去除了现有技术单项比对的不足同时解决了现有的提升对病毒的识别率就要增大误判断率的技术问题。另外,任何的采用了加壳技术藏匿其病毒体的病毒程序在内存中运行的时候都要还原到采用加壳技术前病毒体的原始的状态,所以本发明能够直接检测待检测程序运行过程中的内存数据,不需要对加密病毒、变形病毒等采用了加壳技术的病毒体进行解密、脱壳或还原操作。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明防御未知病毒程序的方法的步骤流程图;
图2是本发明虚拟运行环境获取待检测程序相关数据的图示;
图3是本发明中断操作示意图;
图4是本发明预置的判定规则另一实施方式示意图;
图5是本发明原则库示意图。
具体实施方式
本发明的核心思想:获取待检测程序的运行特征数据,将获得的待检测程序的运行特征数据与已经提取出的已知病毒程序运行过程中具有典型特征的运行特征数据或病毒运行特征数据集合进行比较,判断所述待检测程序是否为病毒程序。
参照图1,是本发明防御未知病毒程序的方法的步骤流程图,包括以下步骤:
步骤S1,获取待检测程序的运行特征数据。技术人员可以利用现有公知技术或者现有的自动化工具(如:勇芳内存数据分析编辑器),将待检测程序的内存数据打印出来。如图2所示,技术人员还可以利用现有的技术设置一个虚拟环境,将待检测程序放入虚拟环境中运行,读取在虚拟环境中运行的待检测程序的内存数据。此过程还可以使用虚拟工具来完成。
在单独的实施中,技术人员还可以按照下列方法获取待检测程序的内存数据,以windows系统为例进行说明(本例中涉及到的句柄、进程id、进程和内存快照等词汇均属于本领域内公知通用的技术名词,其具体的含义在本领域内教科书以及相关图书资料中均有详细说明,在此不再赘述。):
例1:
获取待检测程序a.exe运行过程中的内存数据;
A1步,使用函数createtoolhelp32snapshot()创建内存快照;
A2步,将返回的句柄传递给函数process32first(),函数process32next()来遍历内存中的所有进程,当遇到待检测程序a.exe的进程,就将其进程id保存下来;
A3步,使用函数openprocess()打开a.exe的进程,从而获得该进程的进程句柄;
A4步,使用函数readprocessmemory()读取a.exe进程的句柄;
A5步,获得了待检测程序a.exe运行过程中的内存数据。
例1说明了实际中获取待检测程序运行过程中的内存数据,本领域内的一般技术人员可以采用熟悉的或自动化工具进行实施,例1的说明只是用于帮助理解本发明,对于本领域内的一般技术人员在具体实施方式和具体应用范围上均会有所改变之处,本例的内容不应理解为对本发明的限制。
步骤S2,结合预置的病毒程序运行特征数据,判断所述待检测程序是否为病毒程序。
<1>建立病毒程序运行特征经验库:
技术人员可以将已知病毒程序根据其不同的破坏方式进行不同的分类(如:蠕虫型病毒程序、木马型病毒程序),将同一分类的已知病毒程序采用步骤S1介绍的方法打印出此类病毒程序的内存数据,然后再比较已经打印出已知病毒程序的内存数据,将这些已知病毒程序的内存数据相互间具有相同或相似的部分提取出来。如下例所说明。
例2:
假设,有以下具有相同或相似破坏方式的已知病毒程序v1、v2、v3、v4;
B1步,v1、v2、v3、v4为某一类病毒程序,
B2步,按照步骤S1介绍的方法,打印出上述病毒程序运行过程中的内存数据,
病毒程序v1的内存数据:00,01,h1,44,b1,a1,33,c1,bw,0i,22,8i,11,2s,yy;
病毒程序v2的内存数据:00,cc,ae,44,b1,q3,33,c1,kh,al,22,8i,11,s3,yy;
病毒程序v3的内存数据:00,2c,3e,44,b1,w3,33,c1,nh,a0,22,8i,11,l3,yy;
病毒程序v4的内存数据:00,24,3o,44,b1,wl,33,c1,0h,ui,22,8i,11,4n,yy;
B3步,将这些已知病毒程序的内存数据相互间具有相同或相似的部分提取出来,
其中,该类病毒程序运行过程中的内存数据相互间具有相同的部分是:
00\44,b1\33,c1\22,8i\,该相同部分的有序排列表示为:
#00#44,b1#33,c1#22,8i#;
其中,该类病毒程序运行过程中的内存数据相互间具有相似的部分是:
病毒程序v1的内存数据末尾部分(11,2s,yy)相似于病毒程序v2的内存数据末尾部分(11,s3,yy)相似于病毒程序v3的内存数据末尾部分(11,l3,yy)相似于病毒程序v4的内存数据末尾部分(11,4n,yy),该相似部分可用#11,**,yy#表示。本例中符号“#”代表相同内存数据以外的内存数据,符号“*”代表相似内存数据中的不同部分(用来标示相似部分的内存数据的不同部分类似于这样的设定方式能够快速并精准的在一长串内存数据中检索出病毒程序运行特征数据);
B4步,将#00#44,b1#33,c1#22,8i#存储进数据库;
将#11,**,yy#存储进数据库;
技术人员可以将例2中提取出来的已知病毒程序运行过程中的内存数据相互间具有相同或相似的部分存储进数据库,形成病毒程序运行特征经验库,另外病毒程序的运行特征数据是将已知病毒程序运行过程中的内存数据相互间具有相同或相似的部分提取出来,并且按序排列,被提取出来的部分不一定存在逻辑上的关联或联系。
<2>将待检测数据与所述建立病毒程序运行特征经验库进行比较,判定所述待检测程序是否为病毒程序,具体以下例子进行详细说明:
例3:
C1步,假设待检测程序ca.exe、cb.exe和cc.exe,获取ca.exe、cb.exe和cc.exe的运行特征数据,则,
ca.exe的运行特征数据是:a0,qo,9i,80,5h,3h,jg,pq,ci,c1,8k,00,0k,ab,c3,ck;
cb.exe的运行特征数据是:1a,2b,c3,4d,f5,6h,7k,j8,9k,10,11,22,33,44,55,6i;
cc.exe的运行特征数据是:3h,jg,pq,ci,80,5h,ab,c3,ck,ab,70,cd,ef,gh,53,00;
C2步,其中#9i,80,5h#和#8k,00#是病毒程序运行特征经验库中存储的数据;
其中#ab,**,cd#也是病毒程序运行特征经验库中存储的数据;
C3步,将待检测程序的运行特征数据与病毒程序运行特征经验库比较,
ca.exe的运行特征数据:a0,qo,9i,80,5h,3h,jg,pq,ci,c1,8k,00,0k,ab,c3,ck与病毒程序运行特征经验库进行比较,通过检索病毒程序运行特征经验库,发现ca.exe的运行特征数据中包含有与所述病毒程序运行特征经验库中存储的某类病毒程序的运行特征数据相同的数据,即:#9i,80,5h#和#8k,00#;
cb.exe的运行特征数据:1a,2b,c3,4d,f5,6h,7k,j8,9k,10,11,22,33,44,55,6i与病毒程序运行特征经验库进行比较,通过检索病毒程序运行特征经验库,没有发现cb.exe的运行特征数据中包含有所述病毒程序运行特征经验库中存储的任何病毒程序的运行特征数据;
cc.exe的运行特征数据:3h,jg,pq,ci,80,5h,ab,c3,ck,ab,70,cd,ef,gh,53,00与病毒程序运行特征经验库进行比较,通过检索病毒程序运行特征经验库,发现cc.exe的运行特征数据中包含有与所述病毒程序运行特征经验库中存储的某类病毒程序的运行特征数据相似的数据,即:#ab,**,cd#;
C4步,判断ca.exe与cc.exe是病毒程序,cb.exe不是病毒程序。
技术人员在实际的实施过程中,还可能利用将已知的虚拟地址获取其对应的物理地址。例如A1,使用函数GetPhyAddr()进行实施:
paddr=GetPhyAddr(pvoid vaddr)
//paddr的值是物理地址(paddr=physical address)
//vaddr的值是虚拟地址或线性地址(vaddr=virtual address)
技术人员在实际的实施过程中,仍然还可以使用DEBUG等自动化工具获得内存数据的内容:
例如A2,使用DEBUG的D命令查看内存中的内容:
假定将范围限定在0000:0000H-FFFF:FFFFH中的任何一个单元的内存,如果想知道内存10000H处的内容,可以用″d段地址:
偏移地址″的格式来查看,输入-d 1000:0;使用d 1000:9查看1000:9处的内容;
使用d 1000:0 9查看1000:0-1000:9的内容。
具体实施过程中,技术人员可以根据实际的需要获取对应的值并得到相应的运行特征数据,另外技术人员还可以通过其他的方式或技术手段得到同样的技术效果,在此不再赘述。
通常的,获取待检测程序的运行特征数据和获取已知病毒程序的运行特征数据,本文以上的例子都是以获取待检测程序和已知病毒程序运行过程中的内存数据,但是无论是待检测程序或是病毒程序的运行特征数据不仅仅只限于运行过程中的内存数据,如:某个程序被CPU(中央处理器)执行过程中的独有的运行特征数据,包括寄存器中的某个地址指向到内存中某个位置的数据特征、进行对中断操作的运行特征以及程序在被CPU执行时由内存调入到高速缓存中的数据内容等。具体的,再一个例子中的说明:
例4,CIH类型的病毒利用中断操作,从系统的用户层(也称作:用户态,即RING 3)强行到系统的内核层(即:RING 0),进行对计算机主板上的BIOS芯片进行破坏。
因为CIH类型的病毒用到是从系统的用户层转到系统的内核层,因此在CPU内的高速缓存中存在从系统的用户层到系统的内核层的一些区别于运行其他的程序的迹象(即:正常的程序被执行的时候高速缓存顺序的从内存调取数据并且一般情况下应用程序工作在系统的用户层<RING 3>,CIH类型的病毒程序利用Intel处理器的中断操作从系统的用户层<RING 3>强行转到系统的内核层<RING 0>),因此在高速缓存中存在一些从系统的用户层转到系统的内核层跳转的数据(但是并非存在从系统的用户层转到系统的内核层跳转的数据都是病毒程序,因为个别的正常程序也会用到此方式,注意的是我们本例中并不是说明CIH类型病毒的行为过程,而是想通过对CIH类型病毒程序的运行原理说明其固有的运行特征),假设获取其跳转到的内存相应的数据,并且提取出CIH类型病毒对于这部分数据所共有的部分,如下:
汇编指令:out 70h,al;in al,71h;xor ax,926h;###jmp 2000:003;add al,bl
机器码:9i 7u 16 14 5h a7 3t###77 e1 77 6c 00 d8
//假设“###”左边部分是利用中断操作从系统的用户层强行转到系统的内核层
//假设“###”右边部分是对BIOS芯片的破坏操作
假定待检测程序A的运行特征,如下:
汇编指令:mov ax,1016h  机器码:b8 31 2e
汇编指令:out 70h,al    机器码:0e 21
汇编指令:in al,71h     机器码:4d 8h
汇编指令:xchg ah,al    机器码:63 5h
汇编指令:out 70h,al         机器码:9i 7u          //与病毒运行特征相同部分
汇编指令:in al,71h          机器码:16 14          //与病毒运行特征相同部分
汇编指令:xor ax,926h        机器码:5h a7 3t       //与病毒运行特征相同部分
汇编指令:jnz do_not_trigger  机器码:00 7c 2d
汇编指令:mov ax,4E20H       机器码:b8 20 4e
汇编指令:add bx,1416H       机器码:05 16 14
汇编指令:add al,9CH         机器码:04 9c
汇编指令:mov ah,0           机器码:b4 00
汇编指令:jmp 2000:003        机器码:77 e1 77 6c    //与病毒运行特征相同部分
汇编指令:add al,bl          机器码:00 d8          //与病毒运行特征相同部分
待检测程序A的运行特征,机器码:b8 31 2e 0e 21 4d 8h 63 5h 9i 7u 16 14 5h a73t 00 7c 2d b8 20 4e 05 16 14 04 9c b4 00 77 e1 77 6c 00 d8
其中,机器码“9i 7u 16 14 5h a7 3t”是利用中断操作从系统的用户层强行转到系统的内核层;其中,机器码“77 e1 77 6c 00 d8”是对BIOS芯片的破坏操作;
待检测程序B的运行特征,机器码:9i 02 11 6h 8i u8 e3 9i 7u 16 14 5h a7 3t b831 2e 0e 21 4d 8h 63 7c 2d b8 20 9c b4
虽然待检测程序B的机器码中也存在“9i 7u 16 14 5h a7 3t”,也同样利用中断操作从系统的用户层强行转到系统的内核层,但是检测程序B的机器码中不存在对BIOS芯片进行破坏的数据。
通过以上分析,待检测程序A被执行过程中,CPU内寄存器存在明显的非正常寻址以及其CPU内高速缓存中跳转调取的破坏BIOS芯片的数据,可以确定待检测程序A是CIH类型的病毒程序;虽然待检测程序B也用到了从系统的用户层转到系统的内核层跳转的方式,但是其被执行过程中无论是内存、高速缓存都不存在CIH病毒程序的完整运行特征数据,所以其不是CIH类型的病毒程序。在本例中(例4),并不是说明CIH类型病毒存在着哪些行为或者行为过程,而是想通过对CIH类型病毒程序的运行原理说明其固有的运行特征,关于病毒程序的行为或者行为过程,将在后续的部分详细说明。
从以上的所有实例中可以看出通过检测待检测程序的运行特征数据判定是否为病毒程序的过程中,选取的已知病毒程序的运行特征是很关键的,因为选取的已知病毒程序的运行特征直接关系到对病毒程序识别的准确度。技术人员按照步骤S2的方法,在获取某类型已知病毒程序运行过程中的特征数据时,将该类型的病毒程序共有的并且是必要的运行特征进行提取,提取的已知病毒程序运行过程中的运行特征数据经常是同一类型的病毒程序在运行过程中相同或相似部分的内存数据或者是按照顺序排列所述相同或相似部分的内存数据片段,这些内存数据或者是按照顺序排列的内存数据片段相互之间不一定存在逻辑上的关联或联系,如下例所示,例5:
某一后门类型的病毒程序,该类型病毒程序的特点是调用一个名为E的系统漏洞。
假设该类型病毒程序运行的关键过程是:
运行过程1:if(dr0==0x474E4159)goto has_in_memory//获取驻留内存的设定,其中dr0是个变量,用来判断程序体是否驻留进了内存;
运行过程2:CALL E  //调用系统漏洞;
假设提取该类型病毒程序运行过程中的运行特征数据,其中运行过程1的内存片段为:
17 9i 8b e1 3d 5h 0k
其中运行过程2的内存片段为:3c fh 7i 9c 3t 5k
运行过程1的内存片段与运行过程2的内存片段,按照顺序进行排列,并且运行过程1的内存片段与运行过程2的内存片段不存在逻辑上的关联或联系。根据步骤S2,提取该类型病毒程序的运行特征数据为:#17,9i,8b,e1,3d,5h,0k#3c,fh,7i,9c,3t,5k#
如果待检测程序运行过程中的内存数据按照顺序包含17 9i 8b e1 3d 5h 0k和3c fh 7i9c 3t 5k,则该待检测程序是此类型的病毒程序;
假设,待检测程序运行过程中的内存数据是:
00 3c fh 7i 9c 3t 5k ** 17 9i 8b e1  3d 5h 0k 22,
虽然包含3c fh 7i 9c 3t 5k和17 9i 8b e1 3d 5h 0k,
但是内存片段的顺序与该类型病毒程序的运行特征数据的内存片段顺序不一致,所以该待检测程序不是此类型的病毒程序。
技术人员可以使用DEBUG等工具获取某个程序被CPU(中央处理器)执行过程中在寄存器中的独有的运行特征数据,技术人员还可以设置一个虚拟环境或采用虚拟机等工具模拟出CPU,并将程序在模拟出的CPU中执行,获取待检测程序在被执行过程中的CPU内部的运行特征数据,如图2所示。由于获取程序在被执行过程中的CPU内部数据的现有方法很多也有不少的工具,因此技术人员在具体实施过程中根据需要可以任意的选用达到此技术效果的途径,只要是通过获取待检测程序的运行过程中的特征数据从而识别出病毒的方式,就属于本发明的构思,在此不再赘述。
步骤S3,获取待检测程序的行为数据或行为数据集合。
所述待检测程序的行为数据,其实质就是一系列能够完成特定功能或结果的源代码序列块,即能够完成特定功能或结果的程序操作指令或以及程序操作指令和操作参数或具体的程序操作指令的集合或程序操作指令以及操作参数的集合。所述的序列块可以由反病毒技术人员人工和借助辅助程序分析得出,采用一般分析病毒程序的方式对该待检测程序进行分析即可。所述分析过程除了反病毒技术人员之外,还需要DEBUG、PROVIEW等分析用工具程序和专用的试验用计算机。因为所述待检测程序为病毒程序,有可能在被分析阶段继续传染甚至发作,把存储介质内的数据完全破坏,这就要求分析操作必须在专门设立的试验用PC机上进行,一面带来不必要的损失。
通常的分析病毒程序的步骤可以分为动态和静态两种。所述动态分析则是指利用DEBUG等程序调试工具在内存加载病毒程序的情况下,对病毒程序做动态跟踪,观察病毒程序的具体工作过程,以理解病毒程序工作的原理。在病毒程序编码比较简单时,动态分析不是必须的。但当病毒程序采用了较多的技术手段时,则必须使用动、静态相结合的分析方法才能完成整个分析过程。例如F_lip病毒程序采用随机加密的手段,利用对病毒程序解密程序的动态分析才能完成解密工作,从而进行下一步的静态分析。所述静态分析是指利用DEBUG等反汇编程序将病毒程序代码形成反汇编后的程序清单进行分析,看病毒程序可以分为哪些模块,使用了哪些系统调用功能程序,采用了哪些技巧,如何将病毒程序感染文件的过程转化为清除病毒程序、修复文件的过程,哪些代码可被用做特征码以及如何防御这种病毒程序导致的破坏等。
现有技术中,如果进行上述分析,能够获得病毒程序的特征码,存入病毒程序特征码库中,以后即可根据特征码实现病毒程序的识别。由于特征码识别法只能识别已知的病毒程序,因此,为识别出未知病毒程序,在本实施方式中需要分析得出所述待检测程序的行为操作数据,即一系列完成特定功能或结果的源代码序列块,根据所述源代码序列块判断所述待检测程序是否为病毒程序。当然,所述获取待检测程序行为数据的步骤也可以由计算机自行完成,该部分的实施例在后面进行详述。
步骤S4,结合预置的病毒程序的行为数据或行为数据集合,判断所述待检测程序是否为病毒程序。
<1>建立程序行为经验库:
程序行为经验库,用于存储病毒程序的行为数据或者行为数据的集合,以及存储病毒程序从行为数据到结果数据的过程表达式,所述过程表达式包括行为数据和结果数据以及从行为到结果的对应关系数据。
技术人员通过对病毒多年的观察、研究,发现病毒有一些行为,是病毒的共同行为,而且比较特殊。所述已知病毒程序的破坏性操作行为的分解和获取可以通过人工完成也可以通过计算机实现。所述的破坏性操作行为一般包括对计算机系统的非常规操作或者造成恶性结果的操作。例如:非常规读写操作、删除某系统文件、导致内存冲突、破坏硬盘分区表等等。下面列举一些可以用于监测病毒的行为:
1、占用INT13H(操作系统13H中断)
所有的引导型病毒都攻击BOOT(引导)扇区或主引导扇区。系统启动时,当BOOT扇区或主引导扇区中的主控程序获得执行控制权时,系统就开始工作。一般引导型病毒都会占用INT 13H中断操作,系统引导时其它系统功能调用函数还未设置好,无法利用。引导型病毒占据INT 13H中断的系统功能操作,在其中放置病毒程序的代码,即用病毒程序的代码获得或替换INT 13H中断的程序代码的控制权。
2、修改系统数据区的内存总量或覆盖区的地址范围,例如DOS系统。病毒常驻内存后,为了防止系统将其覆盖,必须修改内存总量。
3、对COM和EXE文件做写入动作。病毒要感染,而使病毒代码写入或嵌入COM和EXE文件的操作。
4、病毒程序与宿主程序的切换。染毒程序运行时,先运行病毒,而后执行宿主程序;在两者切换时,有一些典型的特征行为。
除了上述较为明显的破坏性操作行为,病毒程序一般还会包括较为正常的操作行为,如果这些操作行为单独或者组合起来有可能产生破坏数据的危险操作,则也属于本发明的范围内。例如:程序的一段死循环指令。还有一些程序虽然本身没有攻击性指令行为,但是通过调用其他的指令组合达到了直接的攻击效果,例如:某一个程序调用已知的或者未知的系统漏洞或者系统后门,从而达到直接的攻击效果。程序的调用,即是很常见的也是很正常的技术手段,正常的程序很难免要使用程序的调用,如果将程序的调用行为存储到所述攻击识别规则库中,将造成大面积的正常程序误判断成为病毒程序。如果将程序的调用行为不存储到所述攻击识别规则库中,可能会造成对病毒程序的漏判断。具体的,以下例子进行说明:
例6,某CIH类型的病毒利用中断操作,从系统的用户层(也称作:用户态,即RING 3)强行到系统的内核层(即:RING 0),进行对计算机主板上的BIOS芯片进行破坏。该病毒的行为是:
行为1,通过中断操作,从RING3转到RING0操作;
行为2,调用VMM功能_MapPhysToLinear将物理地址映射到虚拟地址(线性地址)并进行修改;
行为3,向BIOS芯片的Input/Output操作地址输入数据;
该病毒的完整行为表达式:行为1+行为2+行为3
其中,行为1导致了结果1:获得了系统内核级的操作权限;
行为2导致了结果2:直接对虚拟地址进行了操作,建立了读写BIOS芯片的逻辑通道;
行为3导致了结果3:成功的向BIOS芯片写入了数据;
该病毒程序从行为到结果的逻辑表达式:
行为1→结果1,行为2→结果2,行为3→结果3;
(行为1+行为2+行为3)→(结果1+结果2+结果3)=病毒程序运行后的最终结果,将以上的该病毒的完整行为表达式存储到所述的程序行为经验库中,根据需要也可以将该病毒程序从行为到结果的逻辑表达式存储到所述的程序行为经验库中。
从本例中可以得知每一个行为之间都是存在着逻辑上的关联或联系,同样每一个行为之间都是按照顺序进行排列的,在上述的行为逻辑表达式中任何一个行为的缺省都是不成立的,都会对识别病毒程序有着极大的影响。
通常,一个病毒程序的破坏行为可以由一系列的执行破坏性操作的指令或指令集构成的,而且,每一个所述的指令或指令集至少产生一个独立的破坏性操作行为。因此,分解现有病毒程序的破坏性操作行为,即是将已经存在的病毒程序中包含的独立的破坏性操作行为涉及的指令或指令集提取出来。例如,如图3所示,假设13H中断的03H或05H号功能调用涉及可能的破坏数据的危险操作,则13H中断的03H或05H号功能调用对应的指令就可以被看作是产生一个独立的破坏性操作行为的指令。假设,10H中断的02H号功能调用和11H的06H号功能调用组合在一起涉及可能的破坏数据的危险操作,则10H中断的02H号功能调用和11H的06H号功能调用对应的指令集合就可以被看作是产生一个独立的破坏性操作行为的指令集。如果一个被检测的程序具有这样的指令代码,就可以得知该被检测程序存在一个可能破坏性其他程序或数据的可疑操作行为,将这些行为收集起来,就可以通过程序的行为集合判断一个程序是否为病毒程序以及如何最大限度地恢复相应的病毒程序破坏的数据。
获取已知病毒程序的破坏性操作行为,也可以通过计算机辅助完成。例如采用申请号为01117726.8、名称为“检测和清除已知及未知计算机病毒的方法、系统和介质”的中国发明专利介绍的,以提供用于诱发病毒感染的感染对象来检测病毒的方法,就可以获得已知和未知病毒程序的破坏性操作行为。由于申请号为01117726.8的发明已经公开,在此不在赘述。
<2>结合建立的程序行为经验库,判断待检测程序是否为病毒程序。
例7,在例6中假定有个待检测程序f.exe,通过获取该待检测程序的行为是:
行为1,通过查找指令搜索系统内的进程;
行为2,在系统中通过创建进程指令,创建f.exe的进程;
行为3,f.exe通过中断操作,从RING3转到RING0操作;
行为4,调用VMM功能_MapPhysToLinear将物理地址映射到虚拟地址(线性地址)并进行修改;
行为5,向BIOS芯片的Input/Output操作地址输入数据;
行为6,结束自身病毒程序创建的f.exe进程;
行为7,删除自身病毒体f.exe;
f.exe的完整行为表达式:行为1+行为2+行为3+行为4+行为5+行为6+行为7
将f.exe与建立的程序行为经验库中的数据进行比较,其中程序行为经验库中存储的某一数据是:行为33+行为44+行为55,
行为33是,通过中断操作,从RING3转到RING0操作;
行为44是,调用VMM功能_MapPhysToLinear将物理地址映射到虚拟地址(线性地址)并进行修改;
行为55是,向BIOS芯片的Input/Output操作地址输入数据;
该完整行为表达式:行为33+行为44+行为55;
f.exe的完整行为表达式包含行为3+行为4+行为5=行为33+行为44+行为55;
判断f.exe是CIH类型的病毒。
技术人员在进行实施过程中,将获得的所述待检测程序的行为数据按照一定的顺序进行排列如:<(行为A)与(行为B)....与(行为N)>,并与所述经验库中存储的行为信息进行比较。所述待检测程序的行为数据按照一定的顺序进行排列后,即可以得到一系列的行为序列,依次与所述经验库中的行为数据进行比较。如果,所述经验库中存在相匹配的行为数据;如果,所述经验库中不存在任何相匹配的行为信息,则可以判定所述待检测程序为合法程序。另外技术人员在具体的实施过程中,可以根据需要进行安排比较的过程以及比较的数据。
步骤S5,第一部分,获取待检测程序的相应数据与所述程序行为经验库中存储的数据进行比较,确定待检测程序与病毒程序的符合度(相近度或相似度),按照预置的判定规则,判断待检测程序是否为病毒程序。具体的以下实施例详细说明,例8:
<1>将获得的待检测程序的行为数据与建立的所述程序行为经验库中存储的数据进行比较,判断所述程序行为经验库中是否存储有与所述待检测程序的行为数据符合度大于指定的阀值。
待检测程序h1.exe与待检测程序h2.exe,分别获取h1.exe与h2.exe的行为数据;
获得的h1.exe的行为数据是:
行为h11+行为h12+行为h13+行为h14+行为h15+行为h16+行为h17+行为h18
获得的h2.exe的行为数据是:
行为h21+行为h22+行为h23+行为h24+行为h25+行为h26+行为h27+行为h28
某病毒程序v的行为数据存储在程序行为经验库中,v的行为数据是:
行为v3+行为v4+行为v5+行为v6+行为v7
假定,
行为v3=行为h13=行为h23,行为v4=行为h14=行为h24,行为v5=行为h15=行为h25,行为v6=行为h16,行为v7=行为h17;
如果将所设定的阀值,令其值等于4,则k=4;
h1.exe的行为数据有5项行为与v的行为相符,则y1=5;
h2.exe的行为数据有3项行为与v的行为相符,则y2=3;
根据以上过程,y1>k,y2<k。
<2>如果大于指定的阀值,按照预置的判定规则判断待检测程序是否为病毒程序。
技术人员在实施过程中可以依照经验并且根据需要设置所述判定规则,如:技术人员可以直接依照上述的y1>k和y2<k直接判定上述的待检测程序h1.exe是病毒程序,上述的待检测程序h2.exe不是病毒程序。
技术人员还可以建立另外一套判定规则判断待检测程序是否为病毒程序。
如,例9:建立原则库,获取已知病毒程序的破坏性操作行为,将所述的破坏性操作行为以及对应的结果形成病毒程序从行为到结果的逻辑表达式或者建立从行为到结果的对照关系,存储到原则库中。将病毒程序从行为到结果的逻辑表达式存储到所述的原则库中:将,(行为1+行为2+行为3)→(结果1+结果2+结果3)=最终结果,存储到所述的原则库中,同时在原则库中标示出病毒程序的最终结果,所述的最终结果是技术人员依据多年的经验总结出来的病毒程序运行后对系统造成的恶性结果。
将获得的待检测程序的行为数据与建立的原则库中的对应关系表达式相应部分进行比较,对比较成功的次数进行计数,任意一次对比较成功的次数等于或者超过设定的阀值时,判定所述待检测程序为病毒程序。在本例中所述的阀值包含两个意义的阀值,第一个意义的阀值指的是:假定获得的待检测程序的行为数据共包含X项行为,其中有Y项行为都符合原则库中存储的某项数据,则Y的值就是第一个意义的阀值,如:
获得的待检测程序行为数据是:行为1+行为2+...行为X;
原则库中某项数据是:行为11+行为22+...行为nn;
假定,行为1=行为11,行为2=行为22,则Y的值应该等于2。
第二个意义的阀值指的是:待检测程序的行为数据或行为数据的集合与所述的最终结果有关联关系或者待检测程序的行为数据或行为数据的集合能够导致所述的最终结果,此为第二个意义的阀值。如:
获得的待检测程序i.exe行为数据是:行为i1+行为i2+行为i3;
获得的待检测程序g.exe行为数据是:行为g1+行为g2+行为g3+行为g4+行为g5;
原则库中某项数据是:(行为1+行为2+行为3)→(结果1+结果2+结果3)=最终结果;
其中,
行为(g1+行为g2+行为g3+行为g4+行为g5)=(行为1+行为2+行为3)→(结果1+结果2+结果3)=最终结果;
其中,(行为i1+行为i2+行为i3)≠(行为1+行为2+行为3);
因此,待检测程序i.exe判定为不是病毒程序,待检测程序g.exe判定为病毒程序。
步骤S5,第二部分,获取待检测程序的相应数据与所述病毒程序运行特征经验库中存储的数据进行比较,确定待检测程序与病毒程序的符合度(相近度或相似度),按照预置的判定规则,判断待检测程序是否为病毒程序。此过程与步骤S5,第一部分的过程相类似,唯独不同的是:一,获取待检测程序的相应数据指的是获取待检测程序的运行特征数据。二,把对系统进行恶意操作的指令或指令集与对应的指令或指令集执行后的结果,以及该指令或指令集被执行过程中的内存数据形成对应关系表达式,包括已知病毒程序被执行过程中的内存数据形成对应关系表达式,将所述对应关系表达式储存到原则库中。
例10:
根据以往的实施例,分别获取待检测程序l.exe与m.exe的运行特征数据;
l.exe的运行特征数据是:a0,qo,9i,80,5h,3h,jg,pq,ci,c1,8k,00,0k,ab,c3,ck;
m.exe的运行特征数据是:1a,2b,c3,4d,f5,6h,7k,j8,9k,10,11,22,33,44,55,6i;
原则库中某项数据是:
(#qo,9i,80,**,3h,jg#)→病毒程序运行后对系统造成的恶性结果;
待检测程序l.exe判定为病毒程序,m.exe判定为不是病毒程序。
技术人员在实施的过程中可以根据具体的需求选择实施的过程,对病毒判断的准确度取决于以上的所有实例中存储病毒程序特性数据的数据库,如:程序行为经验库、原则库、病毒程序运行特征经验库等。预置的判定规则也决定着识别病毒程序的准确性,如图4所示,技术人员还可以对待检测程序进行综合的分析,以达到较好的分析病毒的效果,原则库中的数据可参照图5所示。
以上对本发明所提供的一种防御未知病毒程序的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种防御未知病毒程序的方法,其特征在于,包括:
获取待检测程序的运行特征数据;
根据获得的所述待检测程序的运行特征数据或运行特征数据集合,结合预置的病毒程序的病毒运行特征数据或病毒运行特征数据集合;以及,
获取待检测程序的行为数据或行为数据集合;
根据获得的所述待检测程序的行为数据或行为数据集合,结合预置的病毒程序的行为数据或者行为数据集合,判断所述待检测程序是否为病毒程序。
2.如权利要求1所述的防御未知病毒程序的方法,其特征在于,还包括:
建立程序行为经验库,用于存储病毒程序的行为数据或者行为数据的集合,以及存储病毒程序从行为数据到结果数据的过程表达式,所述过程表达式包括行为数据和结果数据以及从行为到结果的对应关系数据;以及,将获得的所述待检测程序的行为数据或行为数据集合与所述程序行为经验库中的行为数据进行比较,获得所述过程表达式,通过所述过程表达式判断所述待检测程序是否为病毒程序。
3.如权利要求1或2所述的防御未知病毒程序的方法,其特征在于,按照下列步骤建立病毒程序运行特征经验库:
获得已知病毒程序运行过程中的内存数据;
记录已知病毒程序运行过程中相同或相似部分的内存数据或内存数据的集合以及按序排列所述相同或相似部分的内存数据片段,将所述排列后的内存数据片段存储并形成病毒程序运行特征经验库;以及,将对系统进行恶意操作的指令或指令集在被执行过程中的内存数据存储到所述病毒程序运行特征经验库中,利用所述特征经验库中的数据判断所述待检测程序是否为病毒程序。
4.如权利要求3所述的防御未知病毒程序的方法,其特征在于,按照下列步骤建立原则库:
将已知病毒程序的破坏性操作行为与该破坏性操作行为对应的运行结果,以及病毒程序运行特征经验库中存储的数据形成对应关系表达式,将所述对应关系表达式储存到原则库中;
把对系统进行恶意操作的指令或指令集与对应的指令或指令集执行后的结果,以及该指令或指令集被执行过程中的内存数据形成对应关系表达式,将所述对应关系表达式储存到原则库中;
利用所述原则库中的数据判断所述待检测程序是否为病毒程序。
5.如权利要求4所述的防御未知病毒程序的方法,其特征在于,按照下述步骤获取待检测程序的行为数据:
获得已知病毒程序的破坏性行为数据;
根据所述破坏性行为数据设置对应的控制处理程序;
使控制处理程序获得对所述破坏性行为数据操作的控制权;
待检测程序的破坏性行为数据调用相应的控制处理程序,由所述控制处理程序记录所述待检测程序的行为数据。
6.如权利要求3所述的防御未知病毒程序的方法,其特征在于,还包括:
建立虚拟装置,将待检测程序放入所述虚拟装置中运行,获取待检测程序运行过程中的特征数据。
7.如权利要求3所述的防御未知病毒程序的方法,其特征在于,还包括:
获得已知病毒程序的破坏性行为数据,将待检测程序的行为数据与建立的所述程序行为经验库中存储的数据进行比较,判断所述待检测程序是否为病毒程序;
建立虚拟装置,将待检测程序放入所述虚拟装置中运行,获取待检测程序运行过程中的特征数据,将获取的所述待检测程序运行过程中的特征数据与建立的病毒程序运行特征经验库中存储的数据进行比较,判断所述待检测程序是否为病毒程序。
8.如权利要求3所述的防御未知病毒程序的方法,其特征在于,还包括:
获得已知病毒程序的破坏性行为数据,将待检测程序的行为数据与建立的所述程序行为经验库中存储的数据进行比较,判断所述程序行为经验库中是否存储有与待检测程序的行为数据符合度大于指定的阀值;
根据上述比较的结果,按照预置的判定规则,判断待检测程序是否为病毒程序。
9.如权利要求3所述的防御未知病毒程序的方法,其特征在于,还包括:
获取待检测程序运行过程中的特征数据,将获取的所述待检测程序运行过程中的特征数据与建立的病毒程序运行特征经验库中存储的数据进行比较,判断病毒程序运行特征经验库中是否存储有与待检测程序运行过程中的特征数据符合度大于指定的阀值;
根据上述比较的结果,按照预置的判定规则,判断待检测程序是否为病毒程序。
10.如权利要求8或9所述的防御未知病毒程序的方法,其特征在于,按照下列条件定义所述预置的判定规则:
获取待检测程序的相应数据分别与所述程序行为经验库中存储的数据和所述病毒程序运行特征经验库中存储的数据进行比较,根据比较后的结果,确定是否需要再与建立的原则库进行比较,判断待检测程序是否为病毒程序。
11.如权利要求3所述的防御未知病毒程序的方法,其特征在于,还包括:
获取待检测程序的行为数据和运行过程中的特征数据;
将获得的待检测程序的行为数据与建立的原则库中的对应关系表达式相应部分进行比较,对比较成功的次数进行计数;
将获得的待检测程序的运行过程中的特征数据或者指纹特征与建立的原则库中的对应关系表达式相应部分进行比较,对比较成功的次数进行计数;
任意一次比较成功的次数等于或者超过设定的阀值时,判定所述待检测程序为病毒程序。
CN200810301233XA 2008-04-22 2008-04-22 防御未知病毒程序的方法 Expired - Fee Related CN101281571B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810301233XA CN101281571B (zh) 2008-04-22 2008-04-22 防御未知病毒程序的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810301233XA CN101281571B (zh) 2008-04-22 2008-04-22 防御未知病毒程序的方法

Publications (2)

Publication Number Publication Date
CN101281571A CN101281571A (zh) 2008-10-08
CN101281571B true CN101281571B (zh) 2010-12-22

Family

ID=40014035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810301233XA Expired - Fee Related CN101281571B (zh) 2008-04-22 2008-04-22 防御未知病毒程序的方法

Country Status (1)

Country Link
CN (1) CN101281571B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739519B (zh) * 2008-11-24 2013-01-16 财团法人资讯工业策进会 用于一硬件的监控装置及监控方法
US8181251B2 (en) * 2008-12-18 2012-05-15 Symantec Corporation Methods and systems for detecting malware
US9501644B2 (en) * 2010-03-15 2016-11-22 F-Secure Oyj Malware protection
CN102012982A (zh) * 2010-11-17 2011-04-13 许丽涛 一种保护智能设备安全运行的方法及装置
CN103136471B (zh) * 2011-11-25 2015-12-16 中国科学院软件研究所 一种恶意Android应用程序检测方法和系统
CN103294949A (zh) * 2012-02-29 2013-09-11 阿里巴巴集团控股有限公司 一种检测木马程序的方法及装置
CN102855119B (zh) * 2012-07-26 2014-10-22 北京奇虎科技有限公司 一种可执行文件处理方法和装置
CN103678997B (zh) * 2012-08-30 2017-12-01 腾讯科技(深圳)有限公司 系统安全检查方法及装置
CN102867144B (zh) * 2012-09-06 2015-08-19 北京奇虎科技有限公司 一种用于检测和清除计算机病毒的方法和装置
CN103428212A (zh) * 2013-08-08 2013-12-04 电子科技大学 一种恶意代码检测及防御的方法
CN103530561A (zh) * 2013-10-21 2014-01-22 北京奇虎科技有限公司 防止木马程序基于社会工程学攻击方法和装置
CN103778373B (zh) * 2014-01-10 2017-02-08 深圳市深信服电子科技有限公司 病毒检测方法及装置
CN103927483B (zh) * 2014-04-04 2016-11-16 西安电子科技大学 用于检测恶意程序的判定模型及恶意程序的检测方法
CN105589803B (zh) * 2014-10-24 2018-12-28 阿里巴巴集团控股有限公司 一种测试工具的生成方法和终端设备
CN105488405A (zh) * 2014-12-25 2016-04-13 哈尔滨安天科技股份有限公司 一种基于pdb调试信息的恶意代码分析方法及系统
CN105099834B (zh) * 2015-09-30 2018-11-13 北京华青融天技术有限责任公司 一种自定义特征码的方法和装置
CN105653954B (zh) * 2015-12-25 2019-02-01 北京神州绿盟信息安全科技股份有限公司 一种检测恶意代码的方法及装置
CN105912932A (zh) * 2016-04-08 2016-08-31 周宏斌 一种威胁行为检测系统和方法
CN106682506B (zh) 2016-05-06 2020-03-17 腾讯科技(深圳)有限公司 一种病毒程序检测方法和终端
CN109284610B (zh) * 2018-09-11 2023-02-28 腾讯科技(深圳)有限公司 一种病毒程序检测方法、装置及检测服务器
CN115203699B (zh) * 2022-09-16 2022-12-27 北京网藤科技有限公司 一种基于行为特征的病毒识别方法和系统

Also Published As

Publication number Publication date
CN101281571A (zh) 2008-10-08

Similar Documents

Publication Publication Date Title
CN101281571B (zh) 防御未知病毒程序的方法
CN106796634B (zh) 用于硬件流控制的代码指针验证
Xu et al. Malware detection using machine learning based analysis of virtual memory access patterns
Ming et al. {BinSim}: Trace-based semantic binary diffing via system call sliced segment equivalence checking
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
EP0951676B1 (en) Method and apparatus for polymorphic virus detection
CN100437614C (zh) 未知病毒程序的识别及清除方法
US20170372068A1 (en) Method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
US7409718B1 (en) Method of decrypting and analyzing encrypted malicious scripts
CN105787305B (zh) 一种抵抗符号执行和污点分析的软件保护方法
Zakeri et al. A static heuristic approach to detecting malware targets
CN103150507A (zh) 用于检测未知打包器和加密器的系统和方法
Tian et al. DKISB: Dynamic key instruction sequence birthmark for software plagiarism detection
Debray et al. Reverse engineering self-modifying code: Unpacker extraction
Siddiqui et al. Data mining methods for malware detection using instruction sequences
CN101183414A (zh) 一种程序检测的方法、装置及程序分析的方法
CN110096853A (zh) 基于Mono的Unity安卓应用加固方法、存储介质
CN110362995B (zh) 一种基于逆向与机器学习的恶意软件检测及分析系统
Tian et al. A kernel rootkit detection approach based on virtualization and machine learning
CN111881449B (zh) 恶意代码辅助分析方法及装置
Lee et al. Bypassing anti-analysis of commercial protector methods using DBI tools
CN112711760B (zh) 检测智能合约恶意消除重入影响漏洞的检测方法和装置
CN103186746A (zh) 一种可执行文件的保护方法及系统
Wang et al. Branch obfuscation using code mobility and signal
CN111400708A (zh) 用于恶意代码检测的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Free format text: FORMER OWNER: LI WEI LU ZHENGYU

Owner name: BEIJING GIVE TRUST TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: BAI JIE

Effective date: 20110603

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100089 NO. 203, UNIT 1, BUILDING 16, XIAONANZHUANG, HAIDIAN DISTRICT, BEIJING TO: 100102 3A19, FOUR STOREY APT., NO. 1, LIZE MIDDLE 1ST ROAD, CHAOYANG DISTRICT, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20110603

Address after: 100102 Beijing city Chaoyang District Lize a road No. 1 4 storey apartment 3A19

Patentee after: Technology Co., Ltd. Beijing Bo Xinyuan

Address before: 100089, No. 1, No. 203, building 16, Nanzhuang, Haidian District, Beijing

Co-patentee before: Li Wei

Patentee before: Bai Jie

Co-patentee before: Lu Zhengyu

C56 Change in the name or address of the patentee

Owner name: PHOTON (BEIJING) INTERNATIONAL INFORMATION ENGINEE

Free format text: FORMER NAME: BEIJING GIVETRUST CORP.

CP01 Change in the name or title of a patent holder

Address after: 100102 Beijing city Chaoyang District Lize a road No. 1 4 storey apartment 3A19

Patentee after: Photon (Beijing) International Information Engineering Technology Research Co., Ltd.

Address before: 100102 Beijing city Chaoyang District Lize a road No. 1 4 storey apartment 3A19

Patentee before: Technology Co., Ltd. Beijing Bo Xinyuan

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101222

Termination date: 20150422

EXPY Termination of patent right or utility model