Patty 发表于 2020-5-23 20:27

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:源码

bachelor66 发表于 2020-5-25 12:33

小白看不懂,痛苦                              

jefel 发表于 2020-5-23 20:56

谢谢分享技术帖。

dandaodaodan 发表于 2020-5-23 21:24

厉害了 厉害.   暂时还看不懂.才刚学C++

xianian233 发表于 2020-5-23 23:12

感谢楼主!!这确实顶

lhglhg 发表于 2020-5-24 00:26

感谢楼主!!学习学习

巅峰Clown 发表于 2020-5-24 00:39


感谢楼主!!学习学习

shicongmeng 发表于 2020-5-24 05:21

:keai

感谢楼主!!学习学习

zhenghui99 发表于 2020-5-24 07:17

不明觉厉,好厉害,学习力

不名物 发表于 2020-5-24 10:05

看样子挺有用,支持

gunxsword 发表于 2020-5-24 10:43

看不懂,觉得很历害!
页: [1] 2 3 4
查看完整版本: C/C++ Win64 IO实现驱动层读写