调试无符号驱动的时,快速到达DriverEntry的方法——2

既上一篇,使用sxe 的指令设置异常来断驱动的主函数的方法后,我们继续学习高端调试下断的方法。


利用断加载驱动的函数的方法,同样能够达到驱动的入口。这个加载驱动的函数就是:IopLoadDriver


具体的每个系统的IopLoadDriver的偏移地址可能不同,但是,我们可以通过windbg进行调试和获取:


使用uf nt!IopLoadDriver指令,然后在反汇编的代码框中进行查找:

调试无符号驱动的时,快速到达DriverEntry的方法——2_第1张图片


找到:nt!IopLoadDriver+0x663   就是我们要下断的地址了。


使用 bp nt!IopLoadDriver+0x663 下断点:

调试无符号驱动的时,快速到达DriverEntry的方法——2_第2张图片


然后,当你加载驱动的时候,windbg就会断下了,然后,你使用从函数返回的选项,返回到函数IopLoadDriver的调用点:

调试无符号驱动的时,快速到达DriverEntry的方法——2_第3张图片

这个就是call里边就是驱动的入口了:

8057777c ff572c          call    dword ptr [edi+2Ch] 

单步加入这个call:

调试无符号驱动的时,快速到达DriverEntry的方法——2_第4张图片


这种方法的缺点是不能调试boot类型的驱动以及不使用IopLoadDriver这个系统调用或者绕或这个系统调用加载的驱动的方法。

你可能感兴趣的:(c,汇编)