反病毒引擎设计全解五by

反病毒引擎设计全解五by

ID:29354996

大小:57.27 KB

页数:18页

时间:2018-12-18

反病毒引擎设计全解五by_第1页
反病毒引擎设计全解五by_第2页
反病毒引擎设计全解五by_第3页
反病毒引擎设计全解五by_第4页
反病毒引擎设计全解五by_第5页
资源描述:

《反病毒引擎设计全解五by》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、反病毒引擎设计全解五bysoftice反病毒引擎设计全解五bysoftice2010-06-1001:023.4WindowNT/2000下的病毒实时监控3.4.1实现技术详解WINNT/2000下病毒实时监控的实现主要依赖于NT内核模式驱动编程,拦截IRP,驱动与ring3下客户程序的通信(命名的事件与信号量对象)三项技术。程序的设计思路和大体流程与前面介绍的WIN9X下病毒实时监控非常相似,只是在实现技术由于运行环境的不同将呈现很大的区别。WINNT/2000下不再支持VXD,我将在后面剖析的hooksys.sys其实是一种称为NT内核模

2、式设备驱动的驱动程序。这种驱动程序无论从其结构还是工作方式都与VXD有很大不同。比较而言,NT内核模式设备驱动的编写比VXD难度更大:因为它要求编程者熟悉WINNT/2000的整体架构和运行机制,NT/2000是纯32位微内核操作系统,与WIN9X有很大区别;能灵活使用内核数据结构,如驱动程序对象,设备对象,文件对象,IO请求包,执行体进程/线程块,系统服务调度表等。另外编程者在编程时还需注意许多重要事项,如当前系统运行的IO请求级,分页/非分页内存等。这里首先介绍几个重要的内核数据结构,它们在NT内核模式设备驱动的编程中经常被用到,包括文件

3、对象,驱动程序对象,设备对象,IO请求包(IRP),IO堆栈单元(IO_STACK_LOCATION):文件明显符合NT中的对象标准:它们是两个或两个以上用户态进程的线程可以共享的系统资源;它们可以有名称;它们被基于对象的安全性所保护;并且它们支持同步。对于用户态受保护的子系统,文件对象通常代表一个文件,设备目录,或卷的打开实例;而对于设备和中间型驱动,文件对象通常代表一个设备。文件对象结构中的域大部分是透明的驱动可以访问的域包括:PDEVICE_OBJECTDeviceObject:指向文件于其上被打开的设备对象的指针。UNICODE_ST

4、RINGFileName:在设备上被打开的文件的名字,如果当由DeviceObject代表的设备被打开时此串长度(FileName.Length)为0。驱动程序对象代表可装载的内核模式驱动的映象,当驱动被加载至系统中时,有I/O管理器负责创建。指向驱动程序对象的指针将作为一个输入参数传送到驱动的初始化例程(DriverEntry),再初始化例程(Reinitializeroutines)和卸载例程(Unloadroutine)。驱动程序对象结构中的域大部分是透明的,驱动可以访问的域包括:PDEVICE_OBJECTDeviceObject:指

5、向驱动创建的设备对象的指针。当在初始化例程中成功调用IoCreateDevice后这个域将被自动更新。当驱动卸载时,它的卸载例程将使用此域和设备对象中NextDevice域调用IoDeleteDevice来清除驱动创建的每个设备对象。PDRIVER_INITIALIZEDriverInit:由I/O管理器设置的初始化例程(DriverEntry)入口地址。该例程负责创建驱动程序操作的每个设备的设备对象,需要的话还可以在设备名称和设备对用户态可见名称间创建符号链接。同时它还把驱动程序各例程入口点填入驱动程序对象相应的域中。PDRIVER_UNL

6、OADDriverUnload:驱动程序的卸载例程入口地址。PDRIVER_DISPATCHMajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1]:一个或多个驱动程序调度例程入口地址数组。每个驱动必须在此数组中为驱动处理的IRP_MJ_XXX请求集设置至少一个调度入口,这样所有的IRP_MJ_XXX请求都会被I/O管理器导入同一个调度例程。当然,驱动程序也可以为每个IRP_MJ_XXX请求设置独立的调度入口。当然,驱动程序中可能包含的例程将远不止以上列出的。比如启动I/O例程,中断服务例程(ISR),中断服务DPC例

7、程,一个或多个完成例程,取消I/O例程,系统关闭通知例程,错误记录例程。只不过我们将要剖析的hooksys.sys中只用到例程中很少一部分,故其余的不予详细介绍。设备对象代表已装载的驱动程序为之处理I/O请求的一个逻辑,虚拟或物理设备。每个NT内核模式驱动程序必须在它的初始化例程中一次或多次调用IoCreateDevice来创建它支持的设备对象。例如tcpip.sys在其DriverEntry中就创建了3个共用此驱动的设备对象:Tcp,Udp,Ip。目前有一种比较流行的称为WDM(WindowsDriverModel)的驱动程序,在大多数情况

8、下,其二进制映像可以兼容WIN98和WIN2000(32位版本)。WDM与NT内核模式驱动程序的主要区别在于如何创建设备:在WDM驱动程序中,即插即用(PnP)管理

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。