使用disk.sys有通用性么?最近看到个穿透 poc 访问 \Driver\Disk
然后迭代 IoGetLowerDeviceObject 获取最底层来操作硬盘
感觉通用性还不错,可能用的编译器版本太高,不能运行在XP上
41楼 <- 就是POC作者
CC @caizhe666 JuncoJet 发表于 2021-1-22 09:12
使用disk.sys有通用性么?最近看到个穿透 poc 访问 \Driver\Disk
然后迭代 IoGetLowerDeviceObject 获取最 ...
通用的。向磁盘小端口驱动发送SRB来读写磁盘从XP到WIN10都好使。 storport似乎也不支持cdb16 学习一下 caizhe666 发表于 2021-8-30 17:08
storport似乎也不支持cdb16
嗯,我发现是我的scsi command不正确,用了12位的,貌似r3下的scsi pass through很受限制,有好多扇区都写不了 看看内容 我来学习下。 学习一下,最近也调试到了nvme端口驱动,nvmestor.sys和storport.sys互相call来call去,太绕了看不下去了,来取取经 aeroplane32 发表于 2023-4-27 17:42
学习一下,最近也调试到了nvme端口驱动,nvmestor.sys和storport.sys互相call来call去,太绕了看不下去了, ...
前者是小端口驱动,后者是端口驱动。
后者实现与硬件的通信,前者利用后者与硬件通信实现硬盘的功能。
所以两者不可能“互相call来call去”,因为前者是可以被替换的。
如果用INTEL平台,要想SSD的速度更快,就要安装INTEL的RST驱动来替换微软自带的STORNVME.SYS。
顺带说句,微软在开源方面的小气在大厂里是罕见的。自从2015年放出了2009年的STORAHCI的源码后,至今不肯放出STORNVME的源码。 Tesla.Angela 发表于 2023-4-28 14:58
前者是小端口驱动,后者是端口驱动。
后者实现与硬件的通信,前者利用后者与硬件通信实现硬盘的功能。
说它“call来call去”是因为在对stornvme的\Device\NNNNNNNN设备发送PassThrough时,这个unit device(stacksize=1)会把IRP转发给stornvme的adapter device(stacksize=3),后者又分配一个新的IRP发给前者(IRP_MJ_SCSI),这就是所谓“call来call去”,尽管实际上都在storport.sys里绕圈子,这之后才到开始StartIo进入stornvme。此外uaspstor.sys也和storport.sys有类似的合作。
比较奇怪的是,stornvme的adapter device下面还有acpi和pci的设备,usapstor.sys下面还有acpi和usbhub3的设备,却似乎没发现stornvme/uaspstor和它们的互动。 谢谢楼主 所以nvme研究了没 21111111111 我来学习 学习先进技术,应该很不错
页:
1
[2]