找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 10073|回复: 7

WinDBG 使用教学(三)

  [复制链接]

96

主题

158

回帖

4

精华

核心会员

积分
6513
发表于 2012-5-29 02:26:12 | 显示全部楼层 |阅读模式
本帖最后由 diddom 于 2012-6-3 06:03 编辑

主题: 紫水晶 WinDBG 使用教学(三)

    这篇将讲述 lm, ld, x 指令

    以及用 ld 指令下载和装载 Symbol File

一. 当你建立了 Kernel Debug (Local Mode) 的 Debuggee连接后,

    (假设你已经设定好 Symbol File Path)

    在 WinDBG 命令列输入 .reload, 重新 Reload Module

    然后使用 lm 指令, [Enter]之後, 出现如下讯息

    lkd> lm
    start    end        module name
    00e60000 00e96000   kext       (deferred)            
    01000000 01096000   windbg     (deferred)            
    01120000 0113d000   ndiskd     (deferred)            
    017c0000 0187b000   kdextx86   (deferred)
    .....
    .....
   
    因我们是在 Kernel Debug, 所以使用 lm 指令後
   
    你将会看到列出系统已经载入的驱动以及 WinDBG 载入的 Dll file

    (这里假设你还没下载全部的 Symbol File)

    这时我们可以利用 ld 这指令来帮我们下载 Symbol File
   
    在 WinDBG 命令列输入 ld *, 米字号 "*" 代表全部的意思

    这时你会在命令列左边的提示字元看到 BUSY (WinDBG正在下载)

    完毕后,

    我们再次使用 lm 查看一下

    01000000 01096000   windbg     (pdb symbols)          c:\windows\symbols\windbg.pdb\A4400557801246B3B5C61DD7C782010D1\windbg.pdb
    014c0000 014dd000   ndiskd     (pdb symbols)          c:\windows\symbols\ndiskd.pdb\5E27749CB56344DDA1967760098DCF701\ndiskd.pdb
    01520000 015db000   kdextx86 # (pdb symbols)          c:\windows\symbols\kdextx86.pdb\421A8D241\kdextx86.pdb
    01600000 01636000   kext       (pdb symbols)          c:\windows\symbols\kext.pdb\31003F7986F74F9D9E48751A39FCC0321\kext.pdb
    01900000 0196b000   exts       (pdb symbols)          c:\windows\symbols\exts.pdb\604EB7F6149B44AEB2CEBE19825DA0B61\exts.pdb
    01d00000 01d48000   symsrv     (pdb symbols)          c:\windows\symbols\symsrv.pdb\D7739E23E6054BC88758AA0321E24D9C1\symsrv.pdb
    02000000 02386000   dbgeng     (pdb symbols)          c:\windows\symbols\dbgeng.pdb\A2230C4AE916481CAC103CADA24289811\dbgeng.pdb
    03000000 03121000   dbghelp    (pdb symbols)          c:\windows\symbols\dbghelp.pdb\99A1A8F3877B4CA5BEEADFB737F52EB61\dbghelp.pdb

    嘿嘿~ WinDBG 已经乖乖的帮我们下载和装载好了 Symbol File


二. 一般我们都是利用 Kernel Debug 快速的建立一个 Debuggee连接

    然后查看指定的 Windows 的档案 (这里假设要查看 comdlg32, 也已经下载好 Symbol File)

    但要查看之前一定要用 ld 这指令载入 comdlg32.DLL

    在 WinDBG 命令列输入

    lkd> ld comdlg32
    No modules matched 'comdlg32'

    为何还会出 No modules matched 的错误讯息

    这在刚学 WinDBG 的人会遇到的困境

    为什麽?

    因为 ld 这指令只对已经载入的 module 去帮你找出符合的 Symbol File 载入

    而 Kernel Debug 并没有载入 comdlg32.dll

    这样要怎办呢?

    没错, 用我上一篇文章教的指令 .load

    lkd> .load comdlg32

    然后 Reload  Module 一下
  
    lkd> .reload

    再来

    lkd> ld comdlg32
    Symbols loaded for comdlg32

    这时我们就可以大大方方的用 x 指令查看 comdlg32 的资料了

    lkd> x comdlg32!*
    763510e0 comdlg32!cxVScroll = <no type information>
    7634df40 comdlg32!GetFileVersionInfoW = <no type information>
    76328471 comdlg32!VerifyOpen = <no type information>
    .......
    .......


    至此你应该了解 ld 指令的重要性了


    如有错误,请各位大侠帮忙指正一下, thx

评分

参与人数 1水晶币 +100 收起 理由
Tesla.Angela + 100 赞一个!

查看全部评分

96

主题

158

回帖

4

精华

核心会员

积分
6513
 楼主| 发表于 2012-5-29 20:32:34 | 显示全部楼层
本帖最后由 diddom 于 2012-5-29 20:51 编辑
Tesla.Angela 发表于 2012-5-29 12:18
看到两个台湾方言:讯息、系统的档案。
“然後”、“为什麽”中的繁体字没有翻译过来。 ...



真的耶~

你现在讲我才发现

VBnet的问题吧

点评

精华数目达到8篇,就能成为永久核心会员。  发表于 2012-6-1 03:36

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2012-5-29 12:18:30 | 显示全部楼层
看到两个台湾方言:讯息、系统的档案。
“然後”、“为什麽”中的繁体字没有翻译过来。

96

主题

158

回帖

4

精华

核心会员

积分
6513
 楼主| 发表于 2012-5-29 20:52:37 | 显示全部楼层

我知道为什麽了

因为台湾用"後"

而大陆用"后"

点评

你的精华数目已经大约等于2篇,故把你加入核心会员,有效期一年。  发表于 2012-6-1 03:36

7

主题

414

回帖

1

精华

铂金会员

积分
2173
发表于 2013-4-8 14:52:54 | 显示全部楼层
看看!

0

主题

68

回帖

0

精华

铜牌会员

积分
94
发表于 2015-1-8 08:29:48 | 显示全部楼层
谢谢分享

0

主题

68

回帖

0

精华

铜牌会员

积分
94
发表于 2015-1-8 08:30:04 | 显示全部楼层
谢谢分享

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-6-2 20:09:31 | 显示全部楼层
很好很好 支持一下
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表