欢迎来到天天文库
浏览记录
ID:19469048
大小:37.00 KB
页数:4页
时间:2018-09-28
《本文只供研究参考之用,如作其他用途,概于本人无关!》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、本文只供研究参考之用,如作其他用途,概于本人无关!我的个人主页:http://bbs.scu.edu.cn/~tpo我的电子邮件:zd_dan@263.net邹丹编写于1999年4月29日CIH对硬盘破坏之完全剖析IOS_SendCommand是Win95的一个非常底层的VXD调用,通常是用作对IO设备的低层操作,如:读,写,加锁,格式化等等。一般情况下只能在Ring0和虚拟机中使用,在普通程序中使用会有不可预料的后果!该VXD调用的功能很多,也很繁杂。参数数量很少,只有BCB或IOR和BDD或DCB的地址。但这几个数据结构却包含了大量的信息,结构也相当的复杂。CIH病
2、毒只用到了IOR结构,它包含了近二十个数据,但主要用到的就是IOR_func,IOR_status,IOR_flags,IOR_start_addr[2],IOR_xfer_count,IOR_buffer_ptr,IOR_req_req_handle,IOR_req_vol_handle,IOR_sgd_lin_phys,IOR_num_sgds,IOR_vol_designtr!IOS_SendCommand的调用方法是:movesi,CmdData;addressofBCBorIORmovedi,DevData;addressofBDDorDCBVxDCallIO
3、S_SendCommandIOR的完整定义为:typedefstruct_IOR{ULONGIOR_next;//clientlink;seebelowUSHORTIOR_func;//function;seebelowUSHORTIOR_status;//requeststatus;seebelowULONGIOR_flags;//requestflags;seebelowCMDCPLTIOR_callback;//addressofcallback;seebelowULONGIOR_start_addr[2];//startingaddress;seebelowUL
4、ONGIOR_xfer_count;//#ofsectors/bytes;seebelowULONGIOR_buffer_ptr;//clientbuffer;seebelowULONGIOR_private_client;//BlockDev/IOSclientreservedULONGIOR_private_IOS;//reservedspaceforIOSULONGIOR_private_port;//privateareaforportdriverunionurequestor_usage_ureq;//requestorusage;seebelowULONGI
5、OR_req_req_handle;//requesthandle;seebelowULONGIOR_req_vol_handle;//mediahandle;seebelowULONGIOR_sgd_lin_phys;//firstphysicalSGD;seebelowUCHARIOR_num_sgds;//numberofphysicalSGDsUCHARIOR_vol_designtr;//driveletter;seebelowUSHORTIOR_ios_private_1;//reservedbyIOStoforcealignmentULONGIOR_res
6、erved_2[2];//reservedforinternaluse}IOR,*PIOR;CIH病毒先构造一个IOR,再使用IOS_SendCommand调用,完成IOR所指定的功能。病毒在IOR中的IOR_flags中指示要写的设备为物理设备(IORF_PHYS_CMD),同步调用(IORF_SYNC_COMMAND),即在写操作完成之后才返回。然后指定第一次写的位置为0(IOR_start_addr[2]即0柱面0面0扇区,即主引导区),每次写入2048个字节(IOR_xfer_count),第一次为物理硬盘一(IOR_vol_designtr=80h),需要写入
7、的东西放在内存0c0001000h(IOR_buffer_ptr),这个地址是无所谓的,目的只是要随便写一大串无关数据到硬盘上,只要该地址不是指向不存在的内存空间即可。最后CIH调用IOS_SendCommand,完成一次写操作!操作完成后,先判断状态(IOR_status),看是否有该设备是否正常,是则每次2048字节的一直写下去。如果写完一个硬盘(不太可能)或出错则把IOR_vol_designtr+1使之指向下一个物理硬盘!程序注释如下:;***************************;*KillAllHardDisk*;*
此文档下载收益归作者所有