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

《软件调试》的示例程序

帖子发起人: icommander   发起时间: 2009-07-28 10:53 上午   回复: 3

Print Search
帖子排序:    
   2009-07-28, 10:53 上午
icommander 离线,最后访问时间: 2016/1/11 1:01:38 icommander

发帖数前75位
注册: 2009-07-28
发 贴: 18
588页 “22.2.3 跟踪用户态栈的创建过程”中的错误
Reply Quote

1.第8行AllocStk应为AllcStk,因为示例中只有AllcStk.exe

2.第12行的“键入kv..”(清单22-2)。可是清单22-2中显示的命令是“knL”。内容与书上差别巨大。

0:000> knL
 # ChildEBP RetAddr 
00 0012e4b4 7c8104a0 kernel32!BaseCreateStack
01 0012e8f8 7c810665 kernel32!CreateRemoteThread+0x66
02 0012e91c 77dc8c74 kernel32!CreateThread+0x1e
03 0012e94c 77dc8a44 ADVAPI32!WmipEstablishEventPump+0x1a3
04 0012e958 77dc916b ADVAPI32!WmipAddHandleToEventPump+0x25
05 0012ea60 77dc9620 ADVAPI32!RegisterTraceGuidsW+0x3b8
06 0012ea9c 41ffda33 ADVAPI32!RegisterTraceGuidsA+0xa1
07 0012ead4 41ffdc0f WININET!WppInitUm+0x3d
08 0012eaec 41fd1683 WININET!DllMain+0x5c
09 0012eb4c 7c92118a WININET!_CRT_INIT+0x281
0a 0012eb6c 7c93cb82 ntdll!LdrpCallInitRoutine+0x14
0b 0012ec74 7c935c81 ntdll!LdrpRunInitializeRoutines+0x344
0c 0012ef20 7c935de3 ntdll!LdrpLoadDll+0x3e5
0d 0012f1c8 7c801bb9 ntdll!LdrLoadDll+0x230
0e 0012f230 77d2dbfb kernel32!LoadLibraryExW+0x18e
0f 0012f25c 7c92e473 USER32!__ClientLoadLibrary+0x32
10 0012f2ec 77d1fe13 ntdll!KiUserCallbackDispatcher+0x13
11 0012f790 77d242e9 USER32!NtUserCreateWindowEx+0xc
12 0012f868 77d2592c USER32!InternalCreateDialog+0x5bc
13 0012f89c 77d3a91e USER32!InternalDialogBox+0xa9


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

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误
Reply Quote
多谢反馈。第一个问题是不一致,因为AllocStk更容易理解些,所以我会将程序代码改为这个名字。
第二个问题,第12行应该改为键入knL,但是书中的命令结果是对的,你上面贴出来的结果可能是观察的目标不一样,或者你的机器上有挂钩模块进入了这个进程,本来AllocStk没有窗口,栈中不该出现InternalDialogBox,也不使用WININET.DLL。注意应该在初始断点命中时设置断点,当断点命中时观察。
IP 地址: 已记录   报告
   2022-01-02, 18:21 下午
ox7c00 离线,最后访问时间: 2021/12/20 11:20:52 ox7c00

无等级
注册: 2021-12-20
发 贴: 1
Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误
Reply Quote
第二版中书上说用bp kernel32!BaseCreateStack下断, 但是前面说了这个BaseCreateStack是 kernelbase.dll里面的未公开函数啊。这里是不是应该 bp kernelbase!BaseCreateStack
IP 地址: 已记录   报告
   2022-04-27, 08:49 上午
admin 离线,最后访问时间: 2022/3/21 4:53:13 admin

发帖数前25位
注册: 2005-08-18
发 贴: 52
Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误
Reply Quote
在Windows 7之后,这个部分的设计变化很大,如果要学习跟踪,建议安装一个Windows XP虚拟机,在虚拟机里做试验
IP 地址: 已记录   报告
高端调试 » 图书 » 《软件调试》的示例程序 » Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误

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