-
-
WinDbg调试驱动程序虚拟机Windows7蓝屏
-
发表于:
2013-1-12 18:09
6960
-
WinDbg调试驱动程序虚拟机Windows7蓝屏
物理机Windows7、虚拟机Windows7。物理机Windows7配置WinDbg调试器,自己写的一个驱动程序,其中驱动程序内有形式如下的程序:(驱动程序为系统引导启动)
void Func000(......)//这个函数只运行1次
{
TEXT000:
.....................这里实现函数功能.......
TEXT001:
在函数末尾把:地址TEXT000到TEXT001这段内存清0或加密
}
void Func001(......)//这个函数只运行1次
{
TEXT000:
.....................这里实现函数功能.......
TEXT001:
在函数末尾把:地址TEXT000到TEXT001这段内存清0或加密
}
void Func002(......)//这个函数只运行1次
{
TEXT000:
.....................这里实现函数功能.......
TEXT001:
在函数末尾把:地址TEXT000到TEXT001这段内存清0或加密
}
void Func003(......)//这个函数只运行1次
{
.....................这里实现函数功能.......
函数开头机器码 0x55 0x60.....
}
驱动程序在WinDbg调试过程中,当我对Func000、Func001、Func002这些函数调用完毕后 把程序断在 call Func003;这条指令,然后查看虚拟机Func003函数的内存机器码确认为 0x55 0x60.....后,(A)F7单步进入函数Func003,WinDbg立即显示虚拟机程序进入nt模块并开始进入蓝屏处理程序。(B)如果我点击WinDbg的工具栏的单步进入进入按钮,WinDbg立即来到指令0x60.....也就是跳过一个字节的机器码,汇编指令显示为 push SS;再F7单步进入,则WinDbg就会显示来到了一个机器码全部为0的一段内存,从此进入nt模块并开始进入蓝屏处理程序。(C)于是用IDA分析了这个驱动程序,没有发现函数Func003机器码真的有什么问题,我不相信我这个驱动真的会引起系统蓝屏,于是不调试Windows7虚拟机,直接正常启动系统,结果Windows7虚拟机正常启动,不会蓝屏!有人知道这是为什么?我虽然真心想阻止驱动程序被调试,但是却意外的阻止驱动程序被调试,谁知道WinDbg调试原理,来解释一下?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)