mbrprot..sys驱动建立了一个假atapi的DriverObject和一个假DeviceObject,并以此对传过来的IRP进行处理,由于不得破坏mbrpto.sys自有流程(包括不得改写mbrprot.sys的代码,不得HOOK mbrprot.sys可能调用的系统函数等);俺想出两种解决办法。
1、由于已说明系统有且仅有一个IDE硬盘,必须是ATA接口,因此可以得到\\Device\\Ide\\IdePort0 Device对象后直接向atapi驱动发IRP。

2、直接IO硬盘之。

3.利用SCSI_PASS_THROUGH_DIRECT写进去。

4.直接对DR0发送IRP,由于对DR0发送IRP位于的磁盘保护驱动的上端,因此会被磁盘保护驱动检查,但由于磁盘保护驱动检查的是srb->QueueSortKey,所以可以通过修改srb->QueueSortKey来绕过磁盘保护驱动,这与直接向atapi驱动发送IRP的方法不同,不是得炒冷饭。

上传的附件 第一题.rar