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内核调试

帖子发起人: WillingBug163   发起时间: 2014-02-21 17:44 下午   回复: 3

Print Search
帖子排序:    
   2014-02-21, 17:44 下午
WillingBug163 离线,最后访问时间: 2017/3/22 0:01:16 WillingBug163

发帖数前100位
注册: 2013-08-19
发 贴: 14
Big Smile [:D] 求对KiTrap03执行流程的详解!
Reply Quote
看了一个KiTrap03的反汇编,发现它有两个返回路径,一直没有搞明白怎么回事。
求教,谁能给我详细讲讲。

IP 地址: 已记录   报告
   2014-02-23, 14:55 下午
WillingBug163 离线,最后访问时间: 2017/3/22 0:01:16 WillingBug163

发帖数前100位
注册: 2013-08-19
发 贴: 14
Re: 求对KiTrap03执行流程的详解!
Reply Quote
我自己做板登了,呵呵,大家一起来讨论一下呗。
IP 地址: 已记录   报告
   2014-02-23, 21:37 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 求对KiTrap03执行流程的详解!
Reply Quote

转到KiTrap03主要有两种情况,一种是普通的软件断点,另一种是配合所谓的调试服务(Debug Service)(《软件调试》18.6.6)

INT 2D可以触发调试服务,转到KiDebugService,KiDebugService内会转到KiTrap03

nt!KiDebugService+0x59:
8053dba9 f60550f0dfffff  test    byte ptr ds:[0FFDFF050h],0FFh
8053dbb0 0f85eefeffff    jne     nt!Dr_kids_a (8053daa4)
8053dbb6 ff4568          inc     dword ptr [ebp+68h]
8053dbb9 8b4544          mov     eax,dword ptr [ebp+44h]
8053dbbc 8b4d40          mov     ecx,dword ptr [ebp+40h]
8053dbbf 8b553c          mov     edx,dword ptr [ebp+3Ch]
8053dbc2 e928010000      jmp     nt!KiTrap03+0x7b (8053dcef)

 

 


IP 地址: 已记录   报告
   2014-02-24, 17:44 下午
WillingBug163 离线,最后访问时间: 2017/3/22 0:01:16 WillingBug163

发帖数前100位
注册: 2013-08-19
发 贴: 14
Re: 求对KiTrap03执行流程的详解!
Reply Quote
这个我理解,INT3中断函数我其本看明白了。函数里对发起中断的源进行了判断,发现对标志寄器的第17位(从0开始)好多处的检查。
不过还有一个地方不解,就是看到Kei386EoiHelper函数时,其有下面一个片断。
.text:00443FC9                 cmp     word ptr [esp-60h+arg_64], 80h
.text:00443FD0                 ja      short loc_443FD8


.text:00443FD8 loc_443FD8:                             ; CODE XREF: _KiServiceExit+E7j
.text:00443FD8                                                 ; _KiServiceExit2+B9j ...
.text:00443FD8                 cmp     word ptr [esp-60h+arg_5C+2], 0
.text:00443FDE                 jz      short loc_443FD2
.text:00443FE0                 cmp     word ptr [esp-60h+arg_5C], 0
.text:00443FE5                 jnz     short loc_443FD2
.text:00443FE7                 shr     [esp-60h+arg_5C], 10h
.text:00443FEB                 mov     word ptr [esp-60h+arg_5C+2], 0F8h
.text:00443FF2                 lss     sp, [esp-60h+arg_5C] ; mem低字->reg,mem高字->ss
.text:00443FF7                 assume ss:FLAT
.text:00443FF7                 movzx   esp, sp
.text:00443FFA                 iret
word ptr [esp-60h+arg_64]这个地址是进入中断时第一个局部变量,int3开始的时候直接PUSH 0,之后没有变过。不明白这段在中断是处理什么情况的。


IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » Re: 求对KiTrap03执行流程的详解!

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