VxD技术及其在实时反病毒中的应用
ION,值为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 三、实时反病毒的关键技术-FileHooking 应用程序通过使用动态加载的VxD,间接获得了对Windows9x系统的控制权,但要实现对系统中所有文件I/O操作的实时监视,还要用到另一种关键技术-FileHooking,通过挂接一个处理函数,截获所有与文件I/O操作有关的系 统调用。Windows9x使用32位保护模式可安装文件系统(IFS),由可安装文件系统管理器(IFSManager)协调对文件系统和设备的访问,它接收以Win32API函数调用形式向系统发出的文件I/O请求,再将请求转给文件系统驱动程序FSD,由它调用低级别的IOS系统实现最终访问。每个文件I/OAPI调用都有一个特定的FSD函数与之对应,IFSManager负责完成由API到FSD的参数装配工作,在完成文件I/OAPI函数参数的装配之后转相应FSD执行之前,它会调用一个称为FileSystemApiHookFunction的Hooker函数。通过安装自己的Hooker函数,就可以截获系统内所有对文件I/O的API调用,并适时对相关文件进行病毒检查,从而实现实时监控。 上述过程由用户VxD调用系统VxDIFSMgr提供的服务完成,该VxD提供了丰富的底层文件操作功能:IFSMgr_InstallSyatemApiHook函数用来安装FileSystemApiHookFunction,IFSMgr_RemoveSystemApiHook用来卸除Hooker,IFSMgr_Ring0_FileIO用来对文件和磁盘扇区进行读写访问等等。当由IFSManager转入SystemApiHookFunction时,带有6个参数: FileSystemApiHookFunction( pIFSFuncFSDFnAddr, //对应FSD服务函数地址 intFunctionNum, //与API对应的FSD服务功能号(详见下面) intDrive, //驱动器代号(1=A,2=B,3=C...) intResourceFlags, //资源标志(详见下面) intCodePage, //代码页(0=ANSI,1=OEM) pioreqpir //指向IOREQ结构的指针 ) 参数中比较重要的是FSD功能号、驱动器号和IOREQ结构指针3项。如需截获某个文件I/OAPI调用,只需在Hooker中对相应FSD功能号进行处理 系统中可挂接多个Hooker,形成一条链。IFSMgr_InstallFileSystemApiHook安装Hooker成功时返回前一个Hooker地址,每个Hooker在做特定处理后总应调用前一个Hooker,最后安装的Hooker最先被调用。在VxD中调用其他VxD服务采用INT20h指令后跟一个双字的特殊格式,其中高字为被调用VxD的ID号(系统VxD的ID固定),低字为该VxD之服务号,这一形式称为VxDcall,如: int20h dd00400043h ;VxDCallIFSMgr_InstallSystemApiHook int20h dd00400044h |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |