.sys 文件上的 Windbg 本地内核调试

Windbg Local kernel debugging on a .sys file

我正在对驱动程序(.sys 文件)进行本地内核调试。我是本地内核调试的新手并且知道一些调试。但是我正在处理的情况令人困惑。

我有一个由 python 调用并启动的驱动程序。驱动器是按需 based.so 现在我开始 windbg 本地内核调试。 i 运行 "lm"命令查看加载的模块如下:

lkd> lm
start             end                 module name
fffff801`2ca0d000 fffff801`2d47c000   nt         (pdb symbols)   
          c:\symbols\ntkrnlmp.pdb\C710248A0CA3CAB08015A2B18AB495B41\ntkrnlmp.pdb

Unloaded modules:
fffff801`3f430000 fffff801`3f43e000   chipsec_hlpr.sys
fffff806`fdae0000 fffff806`fdba5000   RtsPer.sys
fffff806`fdbb0000 fffff806`fdbe6000   usbaudio.sys
fffff806`fdb70000 fffff806`fdba6000   usbaudio.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdb70000 fffff806`fdb80000   hiber_storport.sys
fffff801`4b8d0000 fffff801`4c41f000   hiber_iaStorA.sys
fffff801`4c420000 fffff801`4c43e000   hiber_dumpfve.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys
fffff806`fdaa0000 fffff806`fdb65000   RtsPer.sys

但问题是它位于卸载模块部分。我不知道该怎么办。我看不到入口点。我尝试了 IDA,并看到了 ep 地址。 然后我把断点放在下面。

lkd> bp chipsec_hlpr|DriverEntry 出现类似

的错误

^ Operation not supported by current debuggee error in 'bp chipsec_hlpr|DriverEntry'

我还尝试使用加载了 IDA 的 VA 地址,它出现在 000000014000335B 上,因此尝试放置断点。但没有结果。

我知道我在某个地方搞砸了。如果有人有解决方案,请提出您的想法。

谢谢..

本地内核调试不是实时调试
你不能在本地调试中设置断点或查看寄存器或单步执行
它是一种调试快照的转储

您可能需要使用虚拟机或其他物理机作为目标
并将 windbg 连接到目标以进行实时内核调试

当您进行实时会话时 您可以使用多种方式在模块加载时停止 喜欢

sxe ibp; .reboot 

当重新启动后 windbg 在第一个初始断点处中断时
你可以加载符号
并设置断点 bp mydriver!DriverEntry 并从那里进一步探索。