环境:
- host:Win11 预览版
- guest:VMwarre Pro 16 + Windows 10 18362 x64
- 其他工具:VirtualKD-Redux、WinDBG
第一步
- 打开VirtualKD-Redux,将
DbgBreakPoint() on start
勾选。 - 开启虚拟机
- 在VirtualKD-Redux中选中目标虚拟机,开启WinDBG
正式开启
进入虚拟机后打开WinDBG,立即就触发了一个断点,在命令窗口输入kc,查看调用栈:
1 | kd> kc |
先来看看这个KiSystemStartup函数,顾名思义就是系统开始启动的地方,它接收一个参数——结构体LOADER_PARAMETER_BLOCK,先来看看结构体的定义:
1 | kd> dt nt!_LOADER_PARAMETER_BLOCK |
此时,也就是KiSystemStartup函数执行后,会将参数地址赋予全局变量KeLoaderBlock,来看一看:
1 | kd> dq nt!KeLoaderBlock L1 |
在内核启动结束后,KeLoaderBlock会被设置为0,现在并没有,来看看KeLoaderBlock所指向的结构体的具体内容:
1 | kd> dt nt!_LOADER_PARAMETER_BLOCK fffff801`1d00df60 |