我正在编写一个内核驱动程序,它应该读取(在某些情况下还写入)内核 session 空间 (win32k.sys) 中的一些内存地址。我读过另一个主题,例如在 Windbg 中,我应该将上下文更改为随机用户进程以读取内核 session 空间的内存(使用 .process/p)。我怎样才能在内核驱动程序中做到这一点?我应该创建一个与驱动程序通信的用户进程(这是我现在的想法,但我希望有更好的解决方案)还是有更简单的解决方案?
最佳答案
session 空间未映射到系统地址空间(驱动程序共享,如果未附加到任何进程)。这就是为什么您在访问 win32k 时出现蓝屏死机的原因。
您需要通过 KeStackAttachProcess 附加到 EPROCESS 才能执行此操作。您可以使用 ZwQueryInformationProcess(ProcessSessionInformation) 函数获取 session ID。
关于c - 从内核驱动程序到达内核 session 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22557832/