.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
并从那里进一步探索。
我正在对驱动程序(.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
并从那里进一步探索。