龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC:VxD技术及其在实时反病毒中的应用(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
--一个典型的VxD控制过程代码如下: BeginProcVXD_Control cmpeax,1Bh ;SYS_DYNAMIC_DEVICE_INIT消息 jzvxd_dynamic_init_handle cmpeax,1Ch ;SYS_DYNAMIC_DEVICE_EXIT消息 jzvxd_dynamic_exit_

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

 BeginProcVXD_Control
 cmpeax,1Bh
 ;SYS_DYNAMIC_DEVICE_INIT消息
 jzvxd_dynamic_init_handle
 cmpeax,1Ch
;SYS_DYNAMIC_DEVICE_EXIT消息
jzvxd_dynamic_exit_handle
cmpeax,23h
;W32_DEVICEIOCONTROL消息
jnzexit_control_proc
movecx,[esi+0Ch]
;从DIOCParams+0Ch处取控制码
....
;处理控制码
EndProcVXD_Control

 三、实时反病毒的关键技术-FileHooking

 ----应用程序通过使用动态加载的VxD,间接获得了对Windows9x系统的控制权,但要实现对系统中所有文件IO操作的实时监视,还要用到另一种关键技术-FileHooking,通过挂接一个处理函数,截获所有与文件IO操作有关的系
统调用。Windows9x使用32位保护模式可安装文件系统(IFS),由可安装文件系统管理器(IFSManager)协调对文件系统和设备的访问,它接收以Win32API函数调用形式向系统发出的文件IO请求,再将请求转给文件系统驱动程序FSD,由它调用低级别的IOS系统实现最终访问。每个文件IOAPI调用都有一个特定的FSD函数与之对应,IFSManager负责完成由API到FSD的参数装配工作,在完成文件IOAPI函数参数的装配之后转相应FSD执行之前,  它会调用一个称为FileSystemApiHookFunction的Hooker函数。通过安装自己的Hooker函数,就可以截获系统内所有对文件IO的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项。如需截获某个文件IOAPI调用,只需在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
;VxDCallIFSMgr_RemoveSystemApiHook

精彩图集

赞助商链接