很久以前就和他人聊过CIH原理了,但是没有很好地写过,现在已经有人写了,那咱就不多重复了:) 以下摘自新浪网:  Q:CIH是使用什么方法进行感染的?   A:就技巧而言,其原理主要是使用Windows的VxD(虚拟设备驱动程序)编程方法,使用这一方法的 目的是获取高的CPU权限,CIH病毒使用的方法是首先使用SIDT取得IDT base address(中断描述符表基 地址),然后把IDT的INT 3 的入口地址改为指向CIH自己的INT3程序入口部分,再利用自己产生一个INT 3指令运行至此CIH自身的INT 3入口程序出,这样CIH病毒就可以获得最高级别的权限(即权限0),接着 病毒将检查DR0寄存器的值是否为0,用以判断先前是否有CIH病毒已经驻留。如DR0的值不为0,则表示 CIH病毒程式已驻留,则此CIH副本将恢复原先的INT 3入口,然后正常退出(这一特点也可以被我们利用 来欺骗CIH程序,以防止它驻留在内存中,但是应当防止其可能的后继派生版本)。如果判断DR0值为0, 则CIH病毒将尝试进行驻留,其首先将当前EBX寄存器的值赋给DR0寄存器,以生成驻留标记,然后调用 INT 20中断,使用VxD call Page Allocate系统调用,要求分配Windows系统内存(system memory), Windows系统内存地址范围为C0000000h~FFFFFFFFh,它是用来存放所有的虚拟驱动程序的内存区域, 如果程序想长期驻留在内存中,则必须申请到此区段内的内存,即申请到影射地址空间在C0000000h以 上的 内存。   如果内存申请成功,则接着将从被感染文件中将原先分成多段的病毒代码收集起来,并进行组合后 放到申请到的内存空间中,完成组合、放置过程后,CIH病毒将再次调用INT 3中断进入CIH病毒体的INT 3入口程序,接着调用INT20来完成调用一个IFSMgr_InstallFileSystemApiHook的子程序,用来在文件 系统处理函数中挂接钩子,以截取文件调用的操作,接着修改IFSMgr_InstallFileSystemApiHook的入 口,这样就完成了挂接钩子的工作,同时Windows默认的 IFSMgr_Ring0_FileIO(InstallableFileSystemManager,IFSMgr)。服务程序的入口地址将被保留,以 便于CIH病毒调用,这样,一旦出现要求开启文件的调用,则CIH将在第一时间截获此文件,并判断此文 件是否为PE格式的可执行文件,如果是,则感染,如果不是,则放过去,将调用转接给正常的Windows IFSMgr_IO服务程序。CIH不会重复多次地感染PE格式文件,同时可执行文件的只读属性是否有效,不影 响感染过程,感染文件后,文件的日期与时间信息将保持不变。对于绝大多数的PE程序,其被感染后, 程序的长度也将保持不变,CIH将会把自身分成多段,插入到程序的空域中。完成驻留工作后的CIH病毒 将把原先的IDT中断表中的INT 3入口恢复成原样。