Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误

《软件调试》的示例程序

588页 “22.2.3 跟踪用户态栈的创建过程”中的错误


icommander 2009-07-28, 10:53 上午

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

Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误


格蠹老雷 2009-07-28, 21:25 下午
多谢反馈。第一个问题是不一致,因为AllocStk更容易理解些,所以我会将程序代码改为这个名字。
第二个问题,第12行应该改为键入knL,但是书中的命令结果是对的,你上面贴出来的结果可能是观察的目标不一样,或者你的机器上有挂钩模块进入了这个进程,本来AllocStk没有窗口,栈中不该出现InternalDialogBox,也不使用WININET.DLL。注意应该在初始断点命中时设置断点,当断点命中时观察。

Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误


ox7c00 2022-01-02, 18:21 下午
第二版中书上说用bp kernel32!BaseCreateStack下断, 但是前面说了这个BaseCreateStack是 kernelbase.dll里面的未公开函数啊。这里是不是应该 bp kernelbase!BaseCreateStack

Re: 588页 “22.2.3 跟踪用户态栈的创建过程”中的错误


admin 2022-04-27, 08:49 上午
在Windows 7之后,这个部分的设计变化很大,如果要学习跟踪,建议安装一个Windows XP虚拟机,在虚拟机里做试验

Powered by Community Server Powered by CnForums.Net