提问人:yahel abraham 提问时间:8/30/2023 更新时间:8/30/2023 访问量:51
为什么 SWAPGS 指令后 GS 段选择器值没有变化?(Windows 内核调试)
Why does GS segment selector value does not change after SWAPGS instruction? (windows kernel debugging)
问:
我正在尝试了解内核的工作原理,在此过程中,使用 WinDbg,我在“swapgs”和“lfence”指令之后在页面错误处理程序上放置了一个断点: 页面错误处理程序 在我恢复执行和 WinDbg 中断后,GS 值保持不变 (0x2B)。
我尝试使用 rdmsr 读取“MSR_KERNEL_GS_BASE”(0xC0000102),并检查 GS:[9018h] 周围的内存,但它未初始化:GS 的内存
(我还尝试将物理地址转换为虚拟地址(!ptov 0xDB3A0CF018),认为可能是这种情况,但没有成功。 然而,在单步执行后,位测试指令设置了进位标志。
现在,我错过了什么? 为什么 GS 不在 WinDbg 中更新? 为什么无法读取 MSR 中 GS 周围的内存? 在“bt dword ptr gs:[9018h], 1”的情况下,幕后发生了什么? 有没有办法读取正在测试的内核内存?
答: 暂无答案
评论
? @$pcr
!pcr
_KPCR