我正在对驱动程序(.sys文件)进行本地内核调试。我是本地内核调试的新手,并且了解一些调试信息。但是我正在处理的情景很混乱。
我有一个由python调用并启动的驱动程序。该驱动器基于需求。因此,现在我开始进行windbg本地内核调试。我运行“ 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,出现类似
的错误^'bp chipsec_hlpr | DriverEntry'中当前调试对象错误不支持该操作
我也尝试使用IDA加载的VA地址,该地址在000000014000335B上,因此尝试放置Break Point。但没有结果。
我知道我在某个地方被弄乱了。如果有人有解决方案,请发表您的想法。
谢谢..
答案 0 :(得分:1)
本地内核调试不是实时调试
您无法设置断点或查看寄存器,也无法在本地调试中逐步执行
这是一种调试快照的转储
您可能需要使用vm或另一台物理计算机作为目标
并将windbg连接到目标以进行实时内核调试
进行实时会话时 您可以通过多种方式在模块加载时停止 像
sxe ibp; .reboot
重新启动后,windbg在第一个初始断点处中断时
您可以加载符号
并设置一个bp mydriver!DriverEntry
之类的断点,然后从那里进一步探索。