- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
windbg内核环境切换到用户环境
今天遇到个问题,想从内核模式对用户模式的ntdll下断点,可是对于我这样的菜鸟,貌似事件不容易的事,于是翻了很多资料,但是最终还是不解,在驱网群中询问了下,一个好心人找了个连接给我,后来才看懂了,同时转载过来:
使用内核调试会话也可以执行一些用户态调试任务,比如向位于用户态的模块设置断点。但这样做与使用用户态调试器有什么不同呢?我们就以向NTDLL.dll模块的ZwTerminateProcess函数(Stub)为例谈谈二者的区别。
区别一、在内核调试会话中设置这个断点的“难度”略大些。这是因为NTDLL不属于内核态的模块,所以内核会话通常不会加载这个模块(的符号),因此当执行bp命令时很可能被自动蜕化为bu命令。
0: kd bp ntdll!ZwTerminateProcessBp expression ntdll!ZwTerminateProcess could not be resolved, adding deferred bp
恢复执行后,一般的操作也不会触发调试器来加载NTDLL模块和解决这个未决的断点。因此再中断下来,重新加载符号也可能没有用:
2: kd .reloadConnected to Windows Vista 6000 x86 compatible target, ptr64 FALSELoading Kernel Symbols.............................................................................................................................Loading User Symbols
Loading unloaded module list........2: kd bl0 eu???????????? 0001 (0001) (ntdll!ZwTerminateProcess)
使用.reload命令强制加载这个模块也不那么容易:
0: kd .reload /s /f ntdll.dll
ntdll.dll was not found in the image list.Debugger will attempt to load ntdll.dll at given base
Please provide the full image name, including the extension (i.e. kernel32.dll)for more reliable results.Base address and size overrides can be given as.reload image.ext=base,size.Unable to add module at那么该如何设置呢?方法一需要以下几步:
1.A 使用!process命令显示当前进程:
kd !processPROCESS 80af22a0 SessionId: none Cid: 0000??? Peb:ParentCid: 0000??? DirBase:ObjectTable: e1001e38 HandleCount: 240.??? Image: Idle
如果像上面这样是IDLE进程或者是System这些没有用户态的进程,那么就需要执行下面一步,否则跳到1.C。
1.B 使用!process 0 0命令列出所有进程,然后选一个普通的Windows进程,并切换到这个进程:
kd !process 0 0 **** NT ACTIVE PROCESS DUMP ****
...PROCESSSessionId: 0 Cid: 0110??? Peb: 7ffde000 ParentCid: 059c??? DirBase:ObjectTable: e1a55640 HandleCount: 72.??? Image: notepad.exe
kd .PROCESSImplicit process is nowWARNING: .cache forcedecodeuser is not enabled
1.C 执行.reload或.reload /user重新加载符号:
kd .reloadConnected to Windows XP 2600 x86 compatible target, ptr64 FALSELoading Kernel Symbols............
文档评论(0)