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

帖子发起人: 小兵   发起时间: 2010-04-11 12:45 下午   回复: 7

Print Search
帖子排序:    
   2010-04-11, 12:45 下午
xiaobing 离线,最后访问时间: 2010/3/30 5:54:25 小兵

发帖数前50位
注册: 2010-03-30
发 贴: 19
请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
看过《软件调试》中用ReadFile函数说明Windows系统的调用过程后,想通过Windbg看到sysenter指令进入KiFastCallEntry例程中的调试过程。

(
//为了把问题说清楚,增加以下说明 。双机OS都是: Winxp SP2

程序执行到ring3的NtReadFile函数调用sysenter指令时,输入t后,Windbg没有进入ring0,而是已执行后返回NTdll中。
请问Windbg能否跟踪这个NtReadFile函数进入KiFastCallEntry例程的执行过程?
)  

我通过双机调试,昨天试了一天都没成功。
不知道有什么解决办法,谢谢!
IP 地址: 已记录   报告
   2010-04-11, 19:58 下午
louyihua 离线,最后访问时间: 2014/11/22 12:40:40 SuperMouse

发帖数前150位
注册: 2008-10-31
发 贴: 8
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
这个不仅仅是要“双机调试”,而是要进行双机的内核调试。如果仅仅是在用户态进行双机调试,自然是不能进入到内核态的代码的。
IP 地址: 已记录   报告
   2010-04-12, 13:32 下午
xiaobing 离线,最后访问时间: 2010/3/30 5:54:25 小兵

发帖数前50位
注册: 2010-03-30
发 贴: 19
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
实验环境就是 "双机的内核调试" ,呵呵
这个应该不是问题的原因所在。
谢谢!

IP 地址: 已记录   报告
   2010-04-12, 18:22 下午
compiler 离线,最后访问时间: 2011/8/11 15:19:46 compiler

发帖数前50位
注册: 2008-04-22
发 贴: 21
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
sysenter指令 是不能t的 跟我当初的想法一样
应该是在KiFastCallEntry下断点
不过断点命中之后要尽快去掉,应为这个系统会频繁调用
IP 地址: 已记录   报告
   2010-04-14, 10:57 上午
xiaobing 离线,最后访问时间: 2010/3/30 5:54:25 小兵

发帖数前50位
注册: 2010-03-30
发 贴: 19
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
是呀,直觉上感觉可以"t"进去,呵呵。
谢谢!

一个相关问题是从ring0返回ring3时,在函数KiSystemCallExit2中,应该执行sysexit指令。(《软件调试》P181)

但是对KiSystemCallExit2和KiSystemCallExit3都下断点后, 每次刚进入KiSystemCallExit2(执行第一条指令后), 就直接返回ntdll中。
请问这是什么原因? 谢谢大家帮助!



IP 地址: 已记录   报告
   2010-04-15, 12:24 下午
compiler 离线,最后访问时间: 2011/8/11 15:19:46 compiler

发帖数前50位
注册: 2008-04-22
发 贴: 21
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
ntdll有断点没去掉吧?
IP 地址: 已记录   报告
   2010-04-15, 18:39 下午
xiaobing 离线,最后访问时间: 2010/3/30 5:54:25 小兵

发帖数前50位
注册: 2010-03-30
发 贴: 19
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
在ntdll没有设置断点,并且我觉得和ntdll断点没有关系,因为KiSystemCallExit2在ring0。

可能在ring0还需要设置什么断点,在刚进入KiSystemCallExit2输入't'指令后,就不会直接返回到ntdll中,而是执行sysexit指令。

问题是:
 在ring0还要设置什么断点呀?
天呀!呵呵


IP 地址: 已记录   报告
   2010-04-16, 14:59 下午
xiaobing 离线,最后访问时间: 2010/3/30 5:54:25 小兵

发帖数前50位
注册: 2010-03-30
发 贴: 19
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
Reply Quote
我用命令u查看KiSystemCallExit2中sysexit 指令的地址,然后直接对该地址下断点,就可以了。
不知道有其它方法吗?


IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 请问sysenter指令进入KiFastCallEntry例程的调试过程

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