簡體   English   中英

從內核驅動程序到達內核會話空間

[英]Reach kernel session space from kernel driver

我正在編寫一個內核驅動程序,它應該讀取(在某些情況下,還寫入)內核會話空間(win32k.sys)中的一些內存地址。 我讀過另一個主題,例如在 Windbg 中,我應該將上下文更改為隨機用戶進程以讀取內核會話空間的內存(使用 .process /p)。 我怎樣才能在內核驅動程序中做到這一點? 我應該創建一個與驅動程序通信的用戶進程(這是我現在的想法,但我希望有更好的解決方案)還是有更簡單的解決方案?

會話空間未映射到系統地址空間(驅動程序共享,如果未附加到任何進程)。 這就是您在訪問 win32k 時出現藍屏的原因。

您需要通過 KeStackAttachProcess 附加到 EPROCESS 才能執行此操作。 您可以使用 ZwQueryInformationProcess(ProcessSessionInformation) 函數獲取會話 ID。

內核內存空間在所有內核對象之間共享(就像 DOS 和早期 Windows 版本中的真實/無保護模式)。 內核驅動程序可以訪問內核空間內的任何地址,無論它是否屬於他。

您必須找到並附加到 csrss 進程! win32k.sys 不會加載到所有進程的系統地址空間中,僅為 cssrss。

您應該將堆棧附加到 csrss 進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM