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

帖子发起人: lazyworm   发起时间: 2009-07-29 20:17 下午   回复: 2

Print Search
帖子排序:    
   2009-07-29, 20:17 下午
lazyworm 离线,最后访问时间: 2016/9/26 10:56:37 lazyworm

发帖数前50位
注册: 2009-06-04
发 贴: 22
Wilted Flower [W] 有请王宇大侠进来一下。
Reply Quote

最近想跟踪一下SetWindowsHooks一直到内核的执行过程。目标系统是XPSP2(vpc),

我用的方法是用户态跟踪到sysenter时,使用bp nt!KiFastCallEntry.然后执行G,当断在KifastCallEntry后,有时候按F11,或者输入T,结果初夏如下错误

Breakpoint 2 hit
nt!KiFastCallEntry:
804de6f0 b923000000      mov     ecx,23h
kd> t
Access violation - code c0000005 (!!! second chance !!!)
822b9002 298200000000    sub     dword ptr [edx],eax

看起来执行的指令不是mov ecx,23h。这是怎么回事呢。

 


IP 地址: 已记录   报告
   2009-07-29, 21:05 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 比较奇怪的内核系统调用问题。
Reply Quote
这在内核调试时是可能发生的,因为在执行t命令时,调试器会设置跟踪标志,然后恢复目标系统运行,此后可能立刻发生线程切换动作,那么CPU便去执行其它线程了,如果在执行其它线程时发生异常,比如遇到断点或者发生楼主所示的访问违例,那么便可能中断到调试器中。

IP 地址: 已记录   报告
   2009-07-30, 13:08 下午
lazyworm 离线,最后访问时间: 2016/9/26 10:56:37 lazyworm

发帖数前50位
注册: 2009-06-04
发 贴: 22
Re: 比较奇怪的内核系统调用问题。
Reply Quote

原来是这样。我记得以前用softice就不会出现这样的问题。好像是把被调试的线程优先级提高。windbg有这样的功能吗或者相似的办法来解决这个问题呢。如果老是想这样发生问题。特别是在未知的OS中的代码,很容易迷路啊。。。

 

还有一个问题就是 我最后看到调用的系统服务居然是NtUserPeekMessage(本来应该是NtUserSetWindowsHookEx)用。我一直使用的F11(或者输入命令T)。这真让我疑惑。。。


IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » Re: 比较奇怪的内核系统调用问题。

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