联想诊断驱动程序的访问控制不正确,允许低权限用户发出设备IOCTL,以执行任意物理/虚拟内存读写。
感谢ch3rn0byl的帮助(我100%完全借鉴了他的两个函数)。
IOCTL 0x222000:
IOCTL 0x222008/0x22200C:
IOCTL 0x222010:
IOCTL 0x222014:
Write via MmMapIoSpace
此IOCTL将从输入缓冲区提供的指针的值复制到映射的物理内存中
为了解析MmPteBase和其他先决条件,通过搜索物理内存范围0x1000 - 0x10000中8个零字节来找到一个物理“交换”空间。
一旦找到该空间,通过IOCTL 0x222014将虚拟内存复制到该交换空间中,并使用IOCTL 0x222010读回。
目前,所有虚拟读取都使用这个“交换”空间完成。
这是进行虚拟读写的最佳方式吗?可能不是。
它有效吗?是的。
哦,还有,注意你自己的偏移量——这是在Windows 11 21H2上测试的,且禁用了HVCI。