ookFunction的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
|