反病毒引擎设计
日期:2007年9月15日 作者: 查看:[大字体 中字体 小字体]-
任何内核模式程序在创建一个IRP时,同时还创建了一个与之关联的IO_STACK_LOCATION结构数组:数组中的每个堆栈单元都对应一个将处理该IRP的驱动程序,另外还有一个堆栈单元供IRP的创建者使用。堆栈单元中包含该IRP的类型代码和参数信息以及完成函数的地址。
UCHAR MajorFunction:该IRP的主功能码。这个代码应该为类似IRP_MJ_READ一样的值,并与驱动程序对象中MajorFunction表的某个派遣函数指针相对应。
UCHAR MinorFunction:该IRP的副功能码。它进一步指出该IRP属于哪个主功能类。
PDEVICE_OBJECT DeviceObject:与该堆栈单元对应的设备对象的地址。该域由IoCallDriver函数负责填写。
PFILE_OBJECT FileObject:内核文件对象的地址,IRP的目标就是这个文件对象。
下面简要介绍一下WINNT/2000下I/O请求处理流程。先看对单层驱动程序的同步的I/O请求:I/O请求经过子系统DLL子系统DLL调用I/O管理器中相应的服务。I/O管理器以IRP的形式给设备驱动程序发送请求。驱动程序启动I/O操作。在设备完成了操作并且中断CPU时,设备驱动程序服务于中断。最后I/O管理器完成I/O请求。以上六步只是一个非常粗略的描述,其中的中断处理和I/O完成阶段比较复杂。
当设备完成了I/O操作后,它将发出中断请求服务。设备中断发生时,处理器将控制权交给内核陷阱处理程序,内核陷阱处理程序将在它的中断调度表(IDT)中定位用于设备的ISR。驱动程序的ISR例程获得控制权后,它通常只在设备IRQL上停留获得设备状态所必需的一段时间,然后停止设备中断,接着它排队一个DPC并清除中断退出操作。IRQL降低至Dispatch/DPC级之前,所有中间优先级中断因而可以得到服务。当DPC例程得到控制时,它将启动设备队列中下一个I/O请求,然后完成中断服务。
当驱动的DPC例程执行完后,在I/O请求可以考虑结束之前还有一些工作要做。如某些情况下,I/O系统必须将存储在系统内存中的数据复制到调用者的虚拟地址空间中,如将操作结果记录在调用者提供的I/O状态块中或执行缓冲I/O的服务将数据返回给调用线程。这样当DPC例程调用I/O管理器完成原始I/O请求后,I/O管理器会为调用线程调用线程排队一个核心态APC。当线程被调度执行时,挂起的APC被交付。它将把数据和返回状态复制到调用者的地址空间,释放代表I/O操作的IRP,并将调用者的文件句柄或调用者提供的事件或I/O完成端口设置为有信号状态。如果调用者用异步I/O函数ReadFileEx和WriteFileEx指定了用户态APC,则此时还需要将用户态APC排队。最后可以考虑完成I/O。在文件或其它对象句柄上等待的线程将被释放。
基于文件系统设备的I/O请求处理过程与此是基本相同的,主要区别在于增加一个或多个附加的处理层。例如读文件操作,用户应用程序调用子系统库Kernel32.dll中的API函数ReadFile,ReadFile接着调用系统库Ntdll.dll中的NtReadFile,NtReadFile通过一个陷入指令(INT2E)将处理器模式提升至ring0。然后Ntoskrnl.exe中的系统服务调度程序KiSystemService将在系统服务调度表中定位Ntoskrnl.exe中的NtWReadFile并调用之,同时解除中断。此服务例程是I/O管理器的一部分。它首先检查传递给它们的参数以保护系统安全或防止用户模式程序非法存取数据,然后创建一个主功能代码为IRP_MJ_READ的IRP,并将之送到文件系统驱动程序的入口点。以下的工作会由文件系统驱动程序与磁盘驱动程序分层来完成。文件系统驱动程序可以重用一个IRP或是针对单一的I/O请求创建一组并行工作的关联(associated)IRP。执行IRP的磁盘驱动程序最后可能会访问硬件。对于PIO方式的设备,一个IRP_MJ_READ操作将导致直接读取设备的端口或者是设备实现的内存寄存器。尽管运行在内核模式中的驱动程序可以直接与其硬件会话,但它们通常都使用硬件抽象层(HAL)访问硬件:读操作最终会调用Hal.dll中的READ_PORT_UCHAR例程来从某个I/O口读取单字节数据。 - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] 下一页
-
- 反病毒引擎设计 相关文章:
- ·反病毒引擎设计
- ·候捷谈Java反射机制
- ·反病毒引擎设计全解
- ·正反两极端 细看微软Vista十大得失
- ·ASP.NET默认的上传组件支持进度条反映
- ·常见电子书格式及其反编译思路
- ·开机找不到硬盘,进入BIOS将IDE口设为"AUTO"状态,反复按回车键,过几分钟后,才能找到硬盘并正常使用
- ·反病毒知识:如何让你的移动硬盘在DOS下杀毒
- ·强力反驳:子虚乌有的Windows Vista二十宗罪
- ·什么时候oracle使用绑定变量性能反而更差
- 反病毒引擎设计 相关软件
- ·《反恐精英CS1.6》完整安装版本
- ·反P2P终结者
- ·反恐精英 CS 1.5 机器人补丁
- ·反恐精英CS龙珠中文硬盘版
- ·近距离作战4阿登反击战
- ·《反恐精英CS 1.5》免CD-KEY版
- ·1941反击战(1941 - Counter Attack)
- ·薛刚反唐
- ·反恐精英之起源(CS2.0)
- ·反时间限制器 Anti-Timer V1.0 绿色版
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:蜜罐技术:消除防火墙局限和脆弱
精品推荐
热点TOP10
- ·端口大全及端口关闭方法
- ·反病毒引擎设计
- ·防御局域网攻击 ZT
- ·DLL后门清除完全篇
- ·104种木马手工清除方法
- ·元旦佳节慎防Happy New Year病毒
- ·图文教你防范“局域网终结者”攻击
- ·Hook 系统服务隐藏端口
- ·知道么 如何防止电脑被黑客入侵
- ·冲击波(MSBlast)蠕虫分析报告
- ·木马清除百种方法
- ·你的端口随意开,偶就进去共享你的资料
- ·战术攻防思维撷粹
- ·从十大方面入手 教你摆脱黑客的攻击
- ·管理本机端口 防范木马程序
- ·网络安全基础:防火墙的概念及实现原理
- ·再次渗透国内XX知名杀毒软件厂商网站全记录
- ·防火墙技术说明及发展趋势
- ·木马图文档案(冰河篇)
- ·系统被入侵后的恢复
特别推荐
- ·防止对WEB应用服务器的三种攻击
- ·防御DDoS攻击的实时监测模型
- ·DLL后门清除完全篇
- ·网络世界分析:防火墙的来历及应用现状
- ·从十大方面入手 教你摆脱黑客的攻击
- ·端口大全及端口关闭方法
- ·反病毒引擎设计
- ·小心做好防范 zpx520.com劫持浏览器
- ·服务器安全之IPSEC:易忽视的防火墙
- ·你的端口随意开,偶就进去共享你的资料
- ·系统被入侵后的恢复
- ·以动态的方式应对安全威胁 内网安全9项措施
- ·mod_sslssl_util_uuencode_binary buffer over
- ·冲击波(MSBlast)蠕虫分析报告
- ·防御局域网攻击 ZT
- ·战术攻防思维撷粹
- ·104种木马手工清除方法
- ·木马清除百种方法
