VxD技术及其在实时反病毒中的应用

目前国内的Windows9x平台反病毒产品大多属静态反病毒软件,指导思想是"以杀为主",这一方式的缺点是病毒在被清除之前可能早已造成了严重危害一个好的反病毒软件应该是"以防为主,以杀为辅",在病毒入侵时就把它清除掉,这就是实时反病毒技术。

Windows9x使用IntelCPU的Ring0和Ring3两个保护级。系统进程运行于Ring0,因而具有对系统全部资源的访问权和管理权;而普通用户进程运行于Ring3,只能访问自己的程序空间,不允许对系统资源进行直接访问许多操作受到限制。显然这种普通用户进程是无法胜任实时反病毒工作的,必须使后台监视进程运行在Ring0优先级,实现这一目的基础就是VxD技术。

一、VxD技术的特点

VxD即虚拟设备驱动程序,用作Windows9x系统和物理设备之间的接口。但它不仅适用于硬件设备,也适用于按VxD规范所编制的各种软件"设备"

VxD技术的实质是:通过加载具有Ring0最高优先级的VxD,运行于Ring3上的应用程序能够以一定的接口控制VxD的动作,从而达到控制系统的目的。实时反病毒软件之所以要使用VxD技术,关键有二:(1)VxD拥有系统最高运行权限(2)许多Windows9x系统底层功能只能在VxD中调用,应用程序如果要用必须编个VxD作为中介。VxD作为应用程序在系统中的一个代理,应用程序通过它来完成任何自己本身做不到的事情,通过这一手段,Windows9x系统为普通应用程序留下了扩充接口。很不幸,这一技术同样为病毒所利用,CIH病毒正是利用了VxD技术才得以驻留内存、传染执行文件、毁坏硬盘和FlashBIOS。

Windows9x系统下有众多的VxD,每个VxD可提供4种服务,即PM(保护模式)API、V86(虚拟86)API、Win32服务和VxD服务,前3种分别供应用程序在16位保护模式、V86模式以及32位保护模式下调用,VxD服务则只供其他VxD使用用户开发的VxD可提供任意上述服务。除此之外,应用程序还可通过调用API函数DeviceIoControl与支持IOCTL接口的VxD进行通信,执行Win32API不支持的系统低级操作。

二、VxD技术的实现

VxD的操作基于寄存器,所以一般用汇编语言编写,它的关键部分是一个和普通窗口的消息处理过程WndProc相类似的控制过程,不同之处在于它的处理对象是系统发来的控制消息。这些消息共51种,在VxD自加载至卸出整个生命周期内,操作系统不断向它发送各种控制消息,VxD根据自己的需要选择处理,其余的忽略。系统向VxD发送控制消息时将消息代号放在EAX寄存器中并在EBX寄存器中放系统虚拟机(VM)句柄。

对动态VxD来说,最重要的消息有三个:SYS_DYNAMIC_DEVICE_INIT、SYS_DYNAMIC_DEVICE_EXIT以及W32_DEVICEIOCONTROL,消息代号分别是1Bh、1Ch、23h。当VxD被动态加载至内存时。

系统向其发送SYS_DYNAMIC_DEVICE_INIT消息,VxD应在此时完成初始化设置并建立必要的数据结构;当VxD将被卸出内存时,系统向其发送SYS_DYNAMIC_DEVICE_EXIT消息VxD在收到后应清除所作设置并释放相关数据结构;当应用程序调用API函数DeviceIoControl与VxD进行通信时,系统向VxD发送W32_DEVICEIOCONTROL消息,它是应用程序和VxD联系的重要手段,此时ESI寄存器指向一个DIOCParams结构,VxD从输入缓冲区获取应用程序传来数据,相应处理后将结果放在输出缓冲区回送应用程序,达到相互传递数据的目的。

应用程序向VxD发出DeviceIoControl调用时,第2个参数用于指定进行何种控制,控制过程从DIOCParams结构+0Ch处取得此控制码再进行相应处理控制码的代号和含义由应用程序和VxD自行约定,系统预定义了DIOC_GETVERSION (0)和DIOC_CLOSEHANDLE(-1)两个控制码,当应用程序调用API函数CreateFile("\\.\VxDName",...)动态加载一VxD时,系统首先向该VxD的控制过程发送SYS_DYNAMIC_DEVICE_INIT控制消息,若VxD返回成功,系统将再次向VxD发送带有控制码DIOC_OPEN(即DIOC_GETVERSION,值为0)的W32_DEVICEIOCONTROL消息以决定此VxD是否能够支持设备IOCTL接口,VxD必须清零EAX寄存器以表明支持IOCTL接口,这时CreateFile将返回一个设备句柄hDevice,通过它应用程序才能使用DeviceIoControl函数对VxD进行控制。

同一个VxD可用CreateFile打开多次,每次打开时都会返回此VxD的一个唯一句柄,但是系统内存中只保留一份VxD,系统为每个VxD维护一个引用计数,每打开一次计数值加1。当应用程序调用API函数CloseHandle(hDevice)关闭VxD句柄时,VxD将收到系统发来的带控制码DIOC_CLOSEHANDLEW32_DEVICEIOCONTROL消息,同时该VxD的引用计数减1,当最终引用计数为0时,系统向VxD发送控制消息SYS_DYNAMIC_DEVICE_EXIT,然后将其从内存中清除。在极少数情况下应用程序也可调用API函数DeleteFile("\\.\VxDName")忽略引用计数的值直接将VxD卸出内存,这将给使用同一VxD的其他应用程序造成毁灭性影响,应避免使用。

--一个典型的VxD控制过程代码如下:

BeginProcVXD_Control

cmp eax,1Bh

;SYS_DYNAMIC_DEVICE_INIT消息

jz vxd_dynamic_init_handle

cmp eax,1Ch

;SYS_DYNAMIC_DEVICE_EXIT消息

jz vxd_dynamic_exit_handle

cmp eax,23h

;W32_DEVICEIOCONTROL消息

jnz exit_control_proc

mov ecx,[esi+0Ch]

;从DIOC Params+0Ch处取控制码

....

;处理控制码

EndProcVXD_Control

时间: 2024-11-02 05:56:28

VxD技术及其在实时反病毒中的应用的相关文章

嵌入式实时程序设计中C/C++代码的优化

1 引言 计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用. 嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体.具有软件代码小.高度自动化.响应速度快等特点. 特别适合于要求实时和多任务的应用体系.嵌入式实时系统是目前蓬勃发展的行业之一. 但是,实时嵌入式系统的特点使得其软件受时间和空间的严格限制,加上运行环境复杂,使得嵌入式系统软件的开发变得异常困难. 为了设计一个满足功能.性能和死线要求的系统,为了开发

专访阿里巴巴徐盈辉:深度学习和强化学习技术首次在双11中的大规模应用

12月6日-7日,由阿里巴巴集团.阿里巴巴技术发展部.阿里云联合主办,以"2016双11技术创新"为主题的阿里巴巴技术论坛(Alibaba Technology Forum,ATF)将在线举办.(https://yq.aliyun.com/promotion/139) 系列文章陆续发布: 专访阿里巴巴徐盈辉:深度学习和强化学习技术首次在双11中的大规模应用 专访阿里巴巴林伟:三项世界级挑战背后的思考.实践和经验 专访阿里巴巴魏虎:揭秘阿里双11背后的全站个性化&商铺千人千面 价

WebKit推出智能反追踪技术,可实时查看谁拿了你的cookie

本文讲的是WebKit推出智能反追踪技术,可实时查看谁拿了你的cookie, 想象一下,如果你逛完一家超市之后,你的相关信息,如:姓名.出生年月.体型.身高.购买记录等都被记录了下来,你会是什么感受,你还会对这个超市有信任感吗? 虚拟世界也一样,在你使用一个浏览器搜索一些信息后,比如你只搜索了一个衣服的品牌,然后当你在登录该浏览器时,它就会弹出很多与该品牌有关的广告,那你还会对这个浏览器的隐私安全有信任感吗? 如果你认为 IP 地址.cookies 和 HTTP 头是在 web 上唯一标识和追踪

阿里巴巴-商家事业部-数据技术团队招聘火热进行中,绿色通道直达offer!

阿里巴巴-商家事业部-数据技术团队招聘火热进行中,绿色通道直达offer! 商家事业部-应用技术团队致力通过大数据和人工智能的技术为阿里数千万的商家及服务商提供数据产品和平台,这里有海量真实的数据和最有前景的商业环境,在这里有应用和突破业界最前沿的大数据技术的机会和场景. 我们为商家提供独立大数据产品有:客户运营平台 (是为阿里商家打造的数据驱动的客户精细化运营平台).御膳房(为阿里商家提供的从经营决策到营销优化全方位商业技术产品解决方案,包括面向营销的策略中心和企业自己的数据银行,以及定制化的

移动视频监控技术在易守系统中的应用

所外就医是监外执行的一种,网络信息化技术的发展助力于所外就医管理,移动视频监控技术在易守系统中的应用可以有效防止发生所外就医脱逃事件,筑起科技防线.基于所外就医的管理应用需求,天地伟业提出了易守移动视频监控系统结构,该文详细分析了移动视频监控的关键技术.应用优势以及在所外就医安全管理中的应用效果. 所外就医,顾名思义是在看守所外执行刑罚的一种特殊形式,是法律与人性的一种结合.但执行环境的复杂多变直接导致安全警戒任务日益繁重,脱逃风险居高不下.在押人员脱逃,会给当地群众生命财产安全带来严重威胁,甚

Larry Ellison宣布突破性技术,兑现实时性承诺

北京,2014年6月11日--在如今这种快节奏.超级互联及移动/社交联系频繁的环境中,企业需要即刻获得信息,即时做出响应.在这样的环境中,无论是B2B还是B2C,企业的行动速度必须与客户一样迅速,才能提供客户所需的体验. 多年来,科技公司一直在谈论"实时型"企业.然而这么多年来,这些厂商依然停留在谈论的层面,因为他们缺乏必需的世界级技术来兑现实时性的承诺.今天,甲骨文公司颠覆了这种局面,因为只有甲骨文才能跨应用.中间件.数据库和系统为客户提供整合优化的内存功能.Oracle数据库内存(

《中国人工智能学会通讯》——4.28 数据挖掘技术在电子数据取证中的应用

4.28 数据挖掘技术在电子数据取证中的应用 电子数据取证过程中会获得大量的证据数据,主要来源于三个方面,一是计算机主机系统方面的证据,主要包括来自硬盘.内存.外设中的数据:二是来自网络方面的证据,主要包括实时获取的网络通信数据流网络设备上产生的记录,以及网络安全设备上的日志和登录日志:三是来自其他数字设备的证据,如手机.手持电子设备.这些可疑数据的数据量非常庞大并且不断更新,面对这样庞大的.变化的数据,单纯依靠技术人员的经验去分析.去获取有用的证据是不现实的,需要借助工具从海量的数据中获取有用

数据挖掘与数据化运营实战. 2.3 数据挖掘的主要成熟技术以及在数据化运营中的主要应用

2.3 数据挖掘的主要成熟技术以及在数据化运营中的主要应用 2.3.1 决策树 决策树(Decision Tree)是一种非常成熟的.普遍采用的数据挖掘技术.之所以称为树,是因为其建模过程类似一棵树的成长过程,即从根部开始,到树干,到分枝,再到细枝末节的分叉,最终生长出一片片的树叶.在决策树里,所分析的数据样本先是集成为一个树根,然后经过层层分枝,最终形成若干个结点,每个结点代表一个结论. 决策树算法之所以在数据分析挖掘应用中如此流行,主要原因在于决策树的构造不需要任何领域的知识,很适合探索式的

ADO.net 2.0技术内幕第十三章中提到的BLOB应用程序示例哪可以找到

问题描述 ADO.net2.0技术内幕第十三章中提到的BLOB应用程序示例哪可以找到?在MS网站上下载的源码压缩包里找不到这个东东?