本帖最后由 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:源码
R0.rar
(3.29 KB, 下载次数: 583)
R3:源码
R3.rar
(849 Bytes, 下载次数: 424)
|