当前位置:天才代写 > tutorial > C语言/C++ 教程 > VxD技能及其在及时反病毒中的应用

VxD技能及其在及时反病毒中的应用

2017-11-05 08:00 星期日 所属: C语言/C++ 教程 浏览:336

副标题#e#

今朝海内的Windows9x平台反病毒产物大多属静态反病毒软件,指导思想是"以杀为主",这一方法的缺点是病毒在被排除之前大概早已造成了严重危害一个好的反病毒软件应该是"以防为主,以杀为辅",在病毒入侵时就把它排除去,这就是及时反病毒技能。

Windows9x利用IntelCPU的Ring0和Ring3两个掩护级。系统历程运行于Ring0,因而具有对系统全部资源的会见权和打点权;而普通用户历程运行于Ring3,只能会见本身的措施空间,不答允对系统资源举办直接会见很多操纵受到限制。显然这种普通用户历程是无法胜任及时反病毒事情的,必需使靠山监督历程运行在Ring0优先级,实现这一目标基本就是VxD技能。

一、VxD技能的特点

VxD即虚拟设备驱动措施,用作Windows9x系统和物理设备之间的接口。但它不只合用于硬件设备,也合用于按VxD类型所体例的各类软件"设备"

VxD技能的实质是:通过加载具有Ring0最高优先级的VxD,运行于Ring3上的应用措施可以或许以必然的接口节制VxD的行动,从而到达节制系统的目标。及时反病毒软件之所以要利用VxD技能,要害有二:(1)VxD拥有系统最高运行权限(2)很多Windows9x系统底层成果只能在VxD中挪用,应用措施假如要用必需编个VxD作为中介。VxD作为应用措施在系统中的一个署理,应用措施通过它来完成任何本身自己做不到的工作,通过这一手段,Windows9x系统为普通应用措施留下了扩充接口。很不幸,这一技能同样为病毒所操作,CIH病毒正是操作了VxD技能才得以驻留内存、熏染执行文件、破坏硬盘和FlashBIOS。

Windows9x系统下有浩瀚的VxD,每个VxD可提供4种处事,即PM(掩护模式)API、V86(虚拟86)API、Win32处事和VxD处事,前3类别离供给用措施在16位掩护模式、V86模式以及32位掩护模式下挪用,VxD处事则只供其他VxD利用用户开拓的VxD可提供任意上述处事。除此之外,应用措施还可通过挪用API函数DeviceIoControl与支持IOCTL接口的VxD举办通信,执行Win32API不支持的系统初级操纵。

二、VxD技能的实现

VxD的操纵基于寄存器,所以一般用汇编语言编写,它的要害部门是一个和普通窗口的动静处理惩罚进程WndProc相雷同的节制进程,差异之处在于它的处理惩罚工具是系统发来的节制动静。这些动静共51种,在VxD自加载至卸出整个生命周期内,操纵系统不绝向它发送各类节制动静,VxD按照本身的需要选择处理惩罚,其余的忽略。系统向VxD发送节制动静时将动静代号放在EAX寄存器中并在EBX寄存器中放系统虚拟机(VM)句柄。

对动态VxD来说,最重要的动静有三个:SYS_DYNAMIC_DEVICE_INIT、SYS_DYNAMIC_DEVICE_EXIT以及W32_DEVICEIOCONTROL,动静代号别离是1Bh、1Ch、23h。当VxD被动态加载至内存时。

系统向其发送SYS_DYNAMIC_DEVICE_INIT动静,VxD应在此时完成初始化配置并成立须要的数据布局;当VxD将被卸出内存时,系统向其发送SYS_DYNAMIC_DEVICE_EXIT动静VxD在收到后应排除所作配置并释放相关数据布局;当应用措施挪用API函数DeviceIoControl与VxD举办通信时,系统向VxD发送W32_DEVICEIOCONTROL动静,它是应用措施和VxD接洽的重要手段,此时ESI寄存器指向一个DIOCParams布局,VxD从输入缓冲区获取应用措施传来数据,相应处理惩罚后将功效放在输出缓冲区回送应用措施,到达彼此通报数据的目标。

应用措施向VxD发出DeviceIoControl挪用时,第2个参数用于指定举办何种节制,节制进程从DIOCParams布局+0Ch处取得此节制码再举办相应处理惩罚节制码的代号和寄义由应用措施和VxD自行约定,系统预界说了DIOC_GETVERSION (0)和DIOC_CLOSEHANDLE(-1)两个节制码,当应用措施挪用API函数CreateFile("\\.\VxDName",…)动态加载一VxD时,系统首先向该VxD的节制进程发送SYS_DYNAMIC_DEVICE_INIT节制动静,若VxD返回乐成,系统将再次向VxD发送带有节制码DIOC_OPEN(即DIOC_GETVERSION,值为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


#p#副标题#e#

三、及时反病毒的要害技能-FileHooking

#p#分页标题#e#

应用措施通过利用动态加载的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

;VxDCallIFSMgr_RemoveSystemApiHook 

 

    关键字:

天才代写-代写联系方式