Re: 关于INT1的问题

Windows内核调试

关于INT1的问题


tango51 2010-07-02, 19:57 下午
我在双机调试的时候 在虚拟机下用OD加载一个应用程序 然后在应用程序的一个地址下了一个硬件断点,断点地址是004028c0。然后在WINDBG下bp nt!KiTrap01 此时的上下文信息:
kd> g
Breakpoint 0 hit
nt!KiTrap01:
8053e4e4 6a00 push 0
kd> r
eax=00000000 ebx=7ffd7000 ecx=0012ffb0 edx=7c92eb94 esi=ffffffff edi=7c930738
eip=8053e4e4 esp=f54b9dcc ebp=0012fff0 iopl=0 nv up di pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000046
nt!KiTrap01:
8053e4e4 6a00 push 0
kd> resp
esp=f54b9dcc
kd> dd esp l5
f54b9dcc 004028bc 0000001b 00000346 0012ffc0
f54b9ddc 00000023
kd> rdr0
dr0=004028c0

为啥压入的EIP是004028bc 是硬件断点处之前的地址呢?

Re: 关于INT1的问题


tango51 2010-07-02, 20:04 下午
似乎是OD的问题。。。

Re: 关于INT1的问题


tango51 2010-07-02, 20:13 下午
在Windbg下用
ba e1 xxxxxxxxx 去断nt!NtCreateFile
被断到的时机时而是在nt!NtCreateFile入口处,时而断在nt!NtCreateFile的第二条指令处,为啥呢?

Re: 关于INT1的问题


格蠹老雷 2010-07-03, 10:11 上午

楼主很细心,底层基础也很不错。

对于第一个问题,OD应该没有错,估计是断点处的指令比较长,不少于四个字节,建议楼主用u命令验证一下。

第二个问题似乎是误报:

kd> ba e1 nt!NtCreateFile
kd> g
Single step exception - code 80000004 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
nt!NtCreateFile:
83258c7f 8bff            mov     edi,edi
kd> r
eax=00000042 ebx=83258c7f ecx=00000000 edx=83258c7f esi=80e05bf0 edi=80e05b4c
eip=83258c7f esp=80e05b1c ebp=80e05b4c iopl=0         nv up ei pl zr na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00000246
nt!NtCreateFile:
83258c7f 8bff            mov     edi,edi

 

 

Re: 关于INT1的问题


tango51 2010-07-03, 13:23 下午
感谢张老师的解答!

我又试验了一下 发现上面的nt!KiTrap01被调用时 DR6的第14位是1 也就是单步异常 而不是硬件断点

第二次断到nt!KiTrap1就是我设置的硬件断点了

Powered by Community Server Powered by CnForums.Net