这个问题虽然是比较老了,但是看雪上还有同学提到,在这里做个总结,给像我这样的新手看看。

 

1)直接修改入口

WinDbg下断驱动入口

用c32asm或者其他PE编辑工具,修改开头的几个字节,改成cc,即int 3。这样,驱动加载的时候就会断在这里了。

ps:这种方法对于有校验的驱动可能不太适用。

 

2)下断IopLoadDriver

WinDbg下断驱动入口

这里的EDI其实就是DriverObject。DriverObject+2c就是DriverInit。在这里单步进去就是DriverEntry了。

ps:这种方法下断IopLoadDriver对应的偏移,在不同的操作系统下,会有所不同。不过对应的代码基本上是如下形式:

push reg

call reg+xx

 

3)sxe ld:module name

WinDbg下断驱动入口
sxe ld:hookport.sys 

当hookport模块被加载的时候,就触发了一个异常:

WinDbg下断驱动入口

 

得到模块的基地址base:

WinDbg下断驱动入口

 

下断驱动模块执行入口点

bp base+poi(poi(base+3c)+base+28)
WinDbg下断驱动入口

ps:此方法可以下断boot型的驱动。

相关文章: