从到达内核驱动程序内核会话空间(Reach kernel session space from ke

2019-10-19 15:39发布

我正在写一个内核驱动程序,应该读取(在某些情况下,还写)在内核会话空间(Win32k.sys中)一些内存地址。 我读过的另一个话题,例如在WinDbg中,我应该改变的背景下,以随机的用户进程读取内核会话空间的内存(有.process / P)。 我该怎么做,在一个内核驱动程序? 我应该创建与驾驶员通信的用户进程(这是我现在的想法,但我希望有一个更好的解决方案),或者还有一个更简单的解决方案呢?

Answer 1:

会议空间不是在系统地址空间映射(即司机分享,如果不依附于任何处理)。 那些你为什么让BSOD在访问WIN32K。

你需要通过KeStackAttachProcess附加到EPROCESS来执行此操作。 你可以用ZwQueryInformationProcess(ProcessSessionInformation)函数的会话ID。



Answer 2:

内核内存空间中的所有内核对象(就像在DOS和早期的Windows版本一个真正的/无保护模式)的共享。 内核驱动程序可以在内核空间内访问任何地址,是否属于他与否。



Answer 3:

你必须找到并连接到CSRSS进程! Win32k.sys中不仅供CSRSS所有流程的系统地址空间加载。

你应该做堆栈重视CSRSS进程。



文章来源: Reach kernel session space from kernel driver