C/C++ Win64 IO实现驱动层读写
本帖最后由 Patty 于 2020-5-23 20:41 编辑语言:C/C++
工具:VS2017+WDK10,signtools,InstDrv,Dbgview,Win10虚拟机
知识:驱动结构与逻辑,R3.exe编写
------------------------------------DeviceIoControl方式sys和exe通信---------------------------------------------
常识:
IRP:I/O RequestPackage即输入输出请求包exe和sys通信时,exe会发出I/O请求。
操作系统会将I/O请求转化为相应的IRP数据,不同类型传递到不同的dispatch function
通信过程:
就是驱动程序和应用程序自定义一种IO控制码,然后调用DeviceIoControl函数,IO管理器会产生一个MajorFunction 为IRP_MJ_DEVICE_CONTROL(DeviceIoControl函数会产生此IRP)
MinorFunction 为自己定义的控制码的IRP,系统就调用相应的处理IRP_MJ_DEVICE_CONTROL的派遣函数,你在派遣函数中判断MinorFunction ,是自定义的控制码你就进行相应的处理。
------------------------------------------------------------------------------------------------------------------------------一.先谈一下这个定义IO控制码 ,其实可以看作是一种通信协议。
二.定义驱动设备名,符号链接名
三.将符号链接名与设备对象名称关联 ,等待IO控制码
四.应用程序获取设备句柄,发送IO控制码。
五演示:
因为某P会清空Cr3,还伪装Cr3,正常情况下通信是不能过掉某P保护而取读内存的,但是没有保护的程序就可以被读写
如果想读某P的程序需要自己定位Cr3就可以实现读与写 现在不好透漏到时烂大街没得用了
大家看看原理看看是否可以实现读写等功能
------------------------------------------------------------------------------------------------------------------------------
完毕感谢观看~
R0:源码
R3:源码
小白看不懂,痛苦 谢谢分享技术帖。 厉害了 厉害. 暂时还看不懂.才刚学C++ 感谢楼主!!这确实顶 感谢楼主!!学习学习
感谢楼主!!学习学习 :keai
感谢楼主!!学习学习 不明觉厉,好厉害,学习力 看样子挺有用,支持 看不懂,觉得很历害!