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

《软件调试》答疑

帖子发起人: liuxmzc   发起时间: 2009-03-11 18:01 下午   回复: 9

Print Search
帖子排序:    
   2009-03-11, 18:01 下午
liuxmzc 离线,最后访问时间: 2010/1/29 16:04:43 liuxmzc

发帖数前100位
注册: 2008-11-04
发 贴: 12
弱问Windbg问题 在《软件调试》的P180
Reply Quote
kd> u ntdll...
Couldn't resolve error at 'ntdll...'

dump文件用的是书中自带的!
大家帮帮忙。
IP 地址: 已记录   报告
   2009-03-11, 20:08 下午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
兄台您不会真在 Windbg 里输入的 "u ntdll..." 吧
这里只是省略号,Raymond 老师想表示:随便你 U 什么ntdll 里的 Native API Stub...
IP 地址: 已记录   报告
   2009-03-11, 21:13 下午
liuxmzc 离线,最后访问时间: 2010/1/29 16:04:43 liuxmzc

发帖数前100位
注册: 2008-11-04
发 贴: 12
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
谢谢王宇老师。
本人还是在校新手。对Windbg的熟悉只好通过书本实践来摸索了,这样才能熟悉它。都怪本人问的太快,在P181页就有相似的命令却没有察觉! 好了,不管怎样还是解决了。
IP 地址: 已记录   报告
   2009-03-11, 21:27 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
这个地方书中还是有些欠妥的,应该写完整,即:
lkd> u ntdll!NtReadFile
也就是在本地内核调试会话中执行以上命令。在双机内核调试或者用户态调试会话中也可以。

在初稿中没有u命令,最后一稿中才出现“kd> u ntdll... ”这一行,也许是哪次review时的疏忽,抱歉了,会加到勘误中。

IP 地址: 已记录   报告
   2009-03-11, 21:45 下午
liuxmzc 离线,最后访问时间: 2010/1/29 16:04:43 liuxmzc

发帖数前100位
注册: 2008-11-04
发 贴: 12
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
是啊 !我现在正在 “kd> u nt!NtReadFile L40” 中一头雾水。
不过 Raymond老师不用说抱歉,书这么厚,出点错也是难免的。
IP 地址: 已记录   报告
   2009-03-11, 22:03 下午
liuxmzc 离线,最后访问时间: 2010/1/29 16:04:43 liuxmzc

发帖数前100位
注册: 2008-11-04
发 贴: 12
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
lkd> rdmsr 174
msr[174] = 00000000`00000008
lkd> rdmsr 175
msr[175] = 00000000`f78b3000
lkd> rdmsr 176
msr[176] = 00000000`80541770


lkd> x nt!KiFastCallEntry
80541770 nt!KiFastCallEntry =


lkd> u nt!NtReadFile
nt!NtReadFile:
8057c28e 6a58 push 58h //这里地址却过了80000000???书上却没有
8057c290 68a0a44d80 push offset nt!GUID_DOCK_INTERFACE+0x374 (804da4a0)
8057c295 e836fbfbff call nt!_SEH_prolog (8053bdd0)
8057c29a 33f6 xor esi,esi
8057c29c 8975e0 mov dword ptr [ebp-20h],esi
8057c29f 8975d0 mov dword ptr [ebp-30h],esi
8057c2a2 8975a0 mov dword ptr [ebp-60h],esi
8057c2a5 8975a4 mov dword ptr [ebp-5Ch],esi

lkd> u SharedUserData!SystemCallStub //却与Raymond老师所说的相差很大啊
SharedUserData!SystemCallStub:
7ffe0300 8beb mov ebp,ebx
7ffe0302 92 xchg eax,edx
7ffe0303 7c94 jl SharedUserData+0x299 (7ffe0299)
7ffe0305 eb92 jmp SharedUserData+0x299 (7ffe0299)
7ffe0307 7c00 jl SharedUserData!SystemCallStub+0x9 (7ffe0309)
7ffe0309 0000 add byte ptr [eax],al
7ffe030b 0000 add byte ptr [eax],al
7ffe030d 0000 add byte ptr [eax],al


我的是AMD的CPU。
IP 地址: 已记录   报告
   2009-03-11, 22:40 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote

你反汇编内核中的真正的NtReadFile函数了。应该是u ntdll!NtReadFile,而不是u nt!NtReadFile。

lkd> u ntdll!NtReadFile
ntdll!ZwReadFile:
7c90e27c b8b7000000      mov     eax,0B7h
7c90e281 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)
7c90e286 ff12            call    dword ptr [edx]
7c90e288 c22400          ret     24h
7c90e28b 90              nop

不同的Windows版本,实现细节有不同,你的可能是上面这个样子,注意call后面是一个函数指针。也就是说,这种情况下,SharedUserData!SystemCallStub是一个函数指针,它的内容才是真正的那小段代码的地址。

对于这种情况,应该先用dd显示出SystemCallStub的内容,然后再u:

lkd> dd SharedUserData!SystemCallStub l1
7ffe0300  7c90eb8b
lkd> u 7c90eb8b
ntdll!KiFastSystemCall:
7c90eb8b 8bd4            mov     edx,esp
7c90eb8d 0f34            sysenter


IP 地址: 已记录   报告
   2009-03-12, 09:17 上午
liuxmzc 离线,最后访问时间: 2010/1/29 16:04:43 liuxmzc

发帖数前100位
注册: 2008-11-04
发 贴: 12
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
//但是在lkd>中输入时:
lkd> u ntdll!NtReadFile
Couldn't resolve error at 'ntdll!NtReadFile'

//或kd>中输入时:
kd> u ntdll!NtReadFile
Couldn't resolve error at 'ntdll!NtReadFile'


//既然SharedUserData内存区域会映射到每个Win32进程空间中,就用notepad.exe进程看看,如下就成功了。
0:003> u ntdll!NtReadFile
ntdll!ZwReadFile:
7c92e27c b8b7000000 mov eax,0B7h
7c92e281 ba0003fe7f mov edx,offset SharedUserData!SystemCallStub (7ffe0300)
7c92e286 ff12 call dword ptr [edx]
7c92e288 c22400 ret 24h
7c92e28b 90 nop

就是在以上情况输入不对,才试探性地反汇编了内核模式下的Nt!NtReadFile
IP 地址: 已记录   报告
   2009-03-12, 22:24 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
对于失败的两种情况是因为模块列表没有更新,先执行一下.reload命令就该可以了
IP 地址: 已记录   报告
   2009-03-12, 22:34 下午
liuxmzc 离线,最后访问时间: 2010/1/29 16:04:43 liuxmzc

发帖数前100位
注册: 2008-11-04
发 贴: 12
Re: 弱问Windbg问题 在《软件调试》的P180
Reply Quote
Raymond老师的热情让人感动至极!
8.3.3我已经全部实验过了,就这一小节就学到不少知识。 我相信来该站的人会越来越多。
IP 地址: 已记录   报告
高端调试 » 图书 » 《软件调试》答疑 » 弱问Windbg问题 在《软件调试》的P180

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