
杀毒软件技术之静态查毒引擎的实现
发布时间:2006-09-03 11:32:17 来源:程序员杂志 网友评论 0 条
病毒与反病毒技术在很多朋友眼中总有一些神秘感。在接下来的几期文章中,我们会邀请Rising的技术专家向大家介绍关于杀毒软件所用到的方方面面的技术,以求使大家更好的明白杀毒软件到底是如何工作的,同时使大家了解到杀毒技术是如何随着病毒技术的日益变化逐步发展到今天的。在这个过程中,我们会写一系列代码来演示相关的技术,虽然简单,但那可是一个真实引擎的原型。
病毒大致分为以下几类:传统病毒,宏病毒,恶意脚本,木马、黑客、蠕虫、破坏性程序。
病毒与引擎的变迁
简单特征码
80 年代末期,基于个人电脑病毒的诞生,随即就有了清除病毒的工具──反病毒软件。这一时期,病毒所使用的技术还比较简单,从
而检测相对容易,最广泛使用的就是特征码匹配的方法。
特征码是什么呢?比如说,“如果在第1034字节处是下面的内容:0xec , 0x99, 0x80,0x99,就表示是大麻病毒。”这就是特征码,一
串表明病毒自身特征的十六进制的字串。特征码一般都选得很长,有时可达数十字节,一般也会选取多个,以保证正确判断。杀毒软件通
过利用特征串,可以非常容易的查出病毒。
广谱特征
为了躲避杀毒软件的查杀,电脑病毒开始进化。病毒为了躲避杀毒软件的查杀,逐渐演变为变形的形式,每感染一次,就对自身变一
次形,通过对自身的变形来躲避查杀。这样一来,同一种病毒的变种病毒大量增加,甚至可以到达天文数字的量级。大量的变形病毒不同形态之间甚至可以做到没有超过三个连续字节是相同的。
为了对付这种情况,首先特征码的获取不可能再是简单的取出一段代码来,而是分段的,中间可以包含任意的内容(也就是增加了一些不参加比较的“掩码字节”,在出现“掩码字节” 的地方,出现什么内容都不参加比较)。这就是曾经提出的广谱特征码的概念。这个技术
在一段时间内,对于处理某些变形的病毒提供了一种方法,但是也使误报率大大增加,所以采用广谱特征码的技术目前已不能有效的对新病毒进行查杀,并且还可能把正规程序当作病毒误报给用户。
1、传统病毒:能够感染的程序。通过改变文件或者其他东西进行传播,通常有感染可执行文件的文件型病毒和感染引导扇区的引导型病毒;
2、宏病毒(Macro):利用Word、Excel 等的宏脚本功能进行传播的病毒;
3、恶意脚本(Script):做破坏的脚本程序。包括HTML 脚本、批处理脚本、VB 、JS 脚本等;
4、木马(Trojan)程序:当病毒程序被激活或启动后用户无法终止其运行。广义上说,所有的网络服务程序都是木马,判定是否是木马病毒的标准不好确定,通常的标准是:在用户不知情的情况下安装,隐藏在后台,服务器端一般没有界面无法配置;
5、黑客(Hack) 程序:利用网络来攻击其他计算机的网络工具,被运行或激活后就象其他正常程序一样有界面;黑客程序是用来攻击/破坏别人的计算机,对使用者本身的机器没有损害;
6、蠕虫(Worm)程序:蠕虫病毒是一种可以利用操作系统的漏洞、电子邮件、P2P软件等自动传播自身的病毒;
7、破坏性程序(Harm):病毒启动后,破坏用户计算机系统,如删除文件,格式化硬盘等。常见的是bat 文件,也有一些是可执行文件,有一部分和恶意网页结合使用。
启发式扫描
为了对付病毒的不断变化和对未知病毒的研究,启发式扫描方式出现了。启发式扫描是通过分析指令出现的顺序,或特定组合情况等常见病毒的标准特征来决定文件是否感染未知病毒。因为病毒要达到感染和破坏的目的,通常的行为都会有一定的特征,例如非常规读写文件,终结自身,非常规切入零环等等。所以可以根据扫描特定的行为或多种行为的组合来判断一个程序是否是病毒。
行为判定
针对变形病毒、未知病毒等复杂的病毒情况,极少数杀毒软件采用了虚拟机技术,达到了对未知病毒良好的查杀效果。它实际上是一种可控的,由软件模拟出来的程序虚拟运行环境,就像我们看的电影《黑客帝国》一样。在这一环境中虚拟执行的程序,就像生活在母体
(Matrix)中的人,不论好坏,其一切行为都是受到建筑师(architect)控制的。虽然病毒通过各种方式来躲避杀毒软件,但是当它运行在虚拟机中时,它并不知道自己的一切行为都在被虚拟机所监控,所以当它在虚拟机中脱去伪装进行传染时,就会被虚拟机所发现,如此一来,利
用虚拟机技术就可以发现大部分的变形病毒和大量的未知病毒。
引擎技术对比
各种引擎技术相比,虚拟机就像是一个侦探,可以根据对人的行为识别犯罪活动;启发式扫描就像是警察,看你身上携带了枪支而怀疑你;广谱特征是拿着照片追查已知的罪犯,但是会注意是否带了假发或者墨镜来逃避检查;而特征码识别就只是通过对人的外貌来判断。
简单总结一下各种引擎技术的优缺点:
解压缩与去壳
病毒隐藏自身的方法还有加壳和压缩两种方法。加壳是通过一系列的数学运算,将可执行程序或动态链接文件的编码进行改变,以达到缩小程序体积或加密程序编码的目的。通常常见的加壳工具有UPX、ASPack 等。病毒通过使用不同种类或者版本的加壳软件,对自身进行加壳,使得杀毒软件无法发现真正的病毒体,以逃避查杀。并且由于加壳的工具种类很多,同一个工具也存在不同的版本。
为了检测已加壳的病毒,就必须要针对不同种类不同版本的壳编写脱壳程序才可以发现壳内隐藏的真正病毒体。所以,杀毒软件对病毒的查杀能力也在一定程度上取决于他自身的脱壳能力。
压缩是普通用户日常经常使用的减小文件体积的方法,常见的工具软件有WinZip、WinRAR等。病毒有时候会隐藏在压缩包内部,如果一个杀毒软件没有解压缩的能力就不可能查杀压缩包内的病毒。同时,如果杀毒软件不具备相 应格式的压缩能力,在查杀病毒后就不能复原压缩包,导致压缩包破坏。可见,杀毒软件要想做到对病毒的全面捕获与查杀,脱壳解压能力也是至关重要的。
病毒大致分为以下几类:传统病毒,宏病毒,恶意脚本,木马、黑客、蠕虫、破坏性程序。
病毒与引擎的变迁
简单特征码
80 年代末期,基于个人电脑病毒的诞生,随即就有了清除病毒的工具──反病毒软件。这一时期,病毒所使用的技术还比较简单,从
而检测相对容易,最广泛使用的就是特征码匹配的方法。
特征码是什么呢?比如说,“如果在第1034字节处是下面的内容:0xec , 0x99, 0x80,0x99,就表示是大麻病毒。”这就是特征码,一
串表明病毒自身特征的十六进制的字串。特征码一般都选得很长,有时可达数十字节,一般也会选取多个,以保证正确判断。杀毒软件通
过利用特征串,可以非常容易的查出病毒。
广谱特征
为了躲避杀毒软件的查杀,电脑病毒开始进化。病毒为了躲避杀毒软件的查杀,逐渐演变为变形的形式,每感染一次,就对自身变一
次形,通过对自身的变形来躲避查杀。这样一来,同一种病毒的变种病毒大量增加,甚至可以到达天文数字的量级。大量的变形病毒不同形态之间甚至可以做到没有超过三个连续字节是相同的。
为了对付这种情况,首先特征码的获取不可能再是简单的取出一段代码来,而是分段的,中间可以包含任意的内容(也就是增加了一些不参加比较的“掩码字节”,在出现“掩码字节” 的地方,出现什么内容都不参加比较)。这就是曾经提出的广谱特征码的概念。这个技术
在一段时间内,对于处理某些变形的病毒提供了一种方法,但是也使误报率大大增加,所以采用广谱特征码的技术目前已不能有效的对新病毒进行查杀,并且还可能把正规程序当作病毒误报给用户。
1、传统病毒:能够感染的程序。通过改变文件或者其他东西进行传播,通常有感染可执行文件的文件型病毒和感染引导扇区的引导型病毒;
2、宏病毒(Macro):利用Word、Excel 等的宏脚本功能进行传播的病毒;
3、恶意脚本(Script):做破坏的脚本程序。包括HTML 脚本、批处理脚本、VB 、JS 脚本等;
4、木马(Trojan)程序:当病毒程序被激活或启动后用户无法终止其运行。广义上说,所有的网络服务程序都是木马,判定是否是木马病毒的标准不好确定,通常的标准是:在用户不知情的情况下安装,隐藏在后台,服务器端一般没有界面无法配置;
5、黑客(Hack) 程序:利用网络来攻击其他计算机的网络工具,被运行或激活后就象其他正常程序一样有界面;黑客程序是用来攻击/破坏别人的计算机,对使用者本身的机器没有损害;
6、蠕虫(Worm)程序:蠕虫病毒是一种可以利用操作系统的漏洞、电子邮件、P2P软件等自动传播自身的病毒;
7、破坏性程序(Harm):病毒启动后,破坏用户计算机系统,如删除文件,格式化硬盘等。常见的是bat 文件,也有一些是可执行文件,有一部分和恶意网页结合使用。
启发式扫描
为了对付病毒的不断变化和对未知病毒的研究,启发式扫描方式出现了。启发式扫描是通过分析指令出现的顺序,或特定组合情况等常见病毒的标准特征来决定文件是否感染未知病毒。因为病毒要达到感染和破坏的目的,通常的行为都会有一定的特征,例如非常规读写文件,终结自身,非常规切入零环等等。所以可以根据扫描特定的行为或多种行为的组合来判断一个程序是否是病毒。
行为判定
针对变形病毒、未知病毒等复杂的病毒情况,极少数杀毒软件采用了虚拟机技术,达到了对未知病毒良好的查杀效果。它实际上是一种可控的,由软件模拟出来的程序虚拟运行环境,就像我们看的电影《黑客帝国》一样。在这一环境中虚拟执行的程序,就像生活在母体
(Matrix)中的人,不论好坏,其一切行为都是受到建筑师(architect)控制的。虽然病毒通过各种方式来躲避杀毒软件,但是当它运行在虚拟机中时,它并不知道自己的一切行为都在被虚拟机所监控,所以当它在虚拟机中脱去伪装进行传染时,就会被虚拟机所发现,如此一来,利
用虚拟机技术就可以发现大部分的变形病毒和大量的未知病毒。
引擎技术对比
各种引擎技术相比,虚拟机就像是一个侦探,可以根据对人的行为识别犯罪活动;启发式扫描就像是警察,看你身上携带了枪支而怀疑你;广谱特征是拿着照片追查已知的罪犯,但是会注意是否带了假发或者墨镜来逃避检查;而特征码识别就只是通过对人的外貌来判断。
简单总结一下各种引擎技术的优缺点:
解压缩与去壳
病毒隐藏自身的方法还有加壳和压缩两种方法。加壳是通过一系列的数学运算,将可执行程序或动态链接文件的编码进行改变,以达到缩小程序体积或加密程序编码的目的。通常常见的加壳工具有UPX、ASPack 等。病毒通过使用不同种类或者版本的加壳软件,对自身进行加壳,使得杀毒软件无法发现真正的病毒体,以逃避查杀。并且由于加壳的工具种类很多,同一个工具也存在不同的版本。
为了检测已加壳的病毒,就必须要针对不同种类不同版本的壳编写脱壳程序才可以发现壳内隐藏的真正病毒体。所以,杀毒软件对病毒的查杀能力也在一定程度上取决于他自身的脱壳能力。
压缩是普通用户日常经常使用的减小文件体积的方法,常见的工具软件有WinZip、WinRAR等。病毒有时候会隐藏在压缩包内部,如果一个杀毒软件没有解压缩的能力就不可能查杀压缩包内的病毒。同时,如果杀毒软件不具备相 应格式的压缩能力,在查杀病毒后就不能复原压缩包,导致压缩包破坏。可见,杀毒软件要想做到对病毒的全面捕获与查杀,脱壳解压能力也是至关重要的。
推荐阅讯
- Spring入门指引之获取Spring框架
- Eclipse未来:同SOA、Ajax的连接和整合
- J2ME网络编程以及网络游戏的实现
- 板桥里人:开放源码系统与创新
- VS2005为Windows移动程序创建安装文件
- 深入浅出组件编程之组件与控件的区别
- Hibernate作为数据持久层的分析和研究
- J2EE中使用Display标记库来展示表格
- Aspectwerkz 2.0开发企业AOP快速入门
- 深入浅出MFC文档/视图架构之视图
阅读排行
- 1..net页面间的参数传递简单实例
- 2.VC++与Matlab混合编程之引擎操作详解
- 3.Oracle数据库数据对象分析
- 4.Eclipse3.2+Tomcat5.5.17+Oracle9配置
- 5.Oracle数据库中索引的维护
- 6.在Oracle的网络结构中解决连接问题
- 7.Oracle数据安全面面观
- 8.Oracle数据库的ORA-00257故障解决过程
- 9.Oracle数据库备份与恢复的三种方法
- 10.Oracle与SQL Server在企业应用中的比较
专题教程
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
