文件sha1:dc8b7733ab1cec45d6764938eb70f75593f151d3
经分析,发现主要功能是进程的内存读取,为应用层提供相关的接口。如下图:
一些小小的设计:
1,设备对象的打开操作,对应驱动里面irp_mj_create处理函数中,会对进程名进行过滤;如果不是指定的两个进程名,打开操作失败并卸载驱动。
2,设备对象的通信操作,对应驱动里面irp_mj_device_control处理函数。驱动接收到数据之后,根据里面的索引执行对应的函数,没有使用通常的控制码来区分子功能。
读取进程的内存时,使用PsAcquireProcessExitSynchronization来“锁住”进程,避免在读取操作期间,进程退出导致异常。
所有进程名的获取是通过遍历线程,然后再获取进程;而不是直接遍历进程。
原文件及idbhttps://download.csdn.net/download/pureman_mega/87384330