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

时间:2019-02-14 05:28:17

标签: reverse-engineering windbg ida

我正在对驱动程序(.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。但没有结果。

我知道我在某个地方被弄乱了。如果有人有解决方案,请发表您的想法。

谢谢..

1 个答案:

答案 0 :(得分:1)

本地内核调试不是实时调试
您无法设置断点或查看寄存器,也无法在本地调试中逐步执行
这是一种调试快照的转储

您可能需要使用vm或另一台物理计算机作为目标
并将windbg连接到目标以进行实时内核调试

进行实时会话时 您可以通过多种方式在模块加载时停止 像

sxe ibp; .reboot 

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