Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: tango51   发起时间: 2010-07-02 19:57 下午   回复: 4

Print Search
帖子排序:    
   2010-07-02, 19:57 下午
tango51 离线,最后访问时间: 2010/5/27 14:39:58 tango51

发帖数前150位
注册: 2010-05-27
发 贴: 6
关于INT1的问题
Reply Quote
我在双机调试的时候 在虚拟机下用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 是硬件断点处之前的地址呢?
IP 地址: 已记录   报告
   2010-07-02, 20:04 下午
tango51 离线,最后访问时间: 2010/5/27 14:39:58 tango51

发帖数前150位
注册: 2010-05-27
发 贴: 6
Re: 关于INT1的问题
Reply Quote
似乎是OD的问题。。。
IP 地址: 已记录   报告
   2010-07-02, 20:13 下午
tango51 离线,最后访问时间: 2010/5/27 14:39:58 tango51

发帖数前150位
注册: 2010-05-27
发 贴: 6
Re: 关于INT1的问题
Reply Quote
在Windbg下用
ba e1 xxxxxxxxx 去断nt!NtCreateFile
被断到的时机时而是在nt!NtCreateFile入口处,时而断在nt!NtCreateFile的第二条指令处,为啥呢?
IP 地址: 已记录   报告
   2010-07-03, 10:11 上午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 关于INT1的问题
Reply Quote

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

对于第一个问题,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

 

 


IP 地址: 已记录   报告
   2010-07-03, 13:23 下午
tango51 离线,最后访问时间: 2010/5/27 14:39:58 tango51

发帖数前150位
注册: 2010-05-27
发 贴: 6
Re: 关于INT1的问题
Reply Quote
感谢张老师的解答!

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

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


IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 关于INT1的问题

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.