这篇是第一章, 所以首重 WinDBG 基本设定, 没错, 就是 Symbol
连基本的 Symbol 都没有设定, 要怎麽玩 Kernel 呀?
接下来我会 step by step 解说 Symbol 的设定方法
废话少说
首先这里假设你已经把 WinDBG 安装好了
一. 启动 WinDBG 後, 你会在下面命令列看到 Debuggee not connected
好~, 开始建立连结 [File] -> [Kernel Debug] , 之後会出现对话盒
对话盒里面有个 Tab Control, 点选 Local 页签, 然後按 [确定]
假如你是第一次启动, 可能会出现一个对话盒, 会问你要不要储存 workspace,
按 [Yes], 这样就完成建立了一个 Debuggee 的连结
这时你可以输入 version, 看一下系统的相关资讯和 Debugger 的版本
二. 接下来要搞定 SymBol 设定, 这部分很重要, 你一定要了解
从 [File] -> [Symbol File Path], 或者按 Ctrl + S,
之後会出现一个以 Symbol Search Path 为 Title 的对话盒, 开始设定 SymBol 路径
输入 C:\Windows\Symbols;SRV*C:\Windows\Symbols* http://msdl.microsoft.com/download/symbols
然後按 [确定]
我先解说这个输入的用意, 它分成两部分
一个是 C:\Windows\Symbols
另一个是 SRV*C:\Windows\Symbols* http://msdl.microsoft.com/download/symbols
两个以分号 ";" 隔开的
其用意就是告诉 WinDBG 如果你在 C:\Windows\Symbols 这个目录下找不到 Symbol,
那麽就到 http://msdl.microsoft.com/download/symbols
这网址去找,
并且把找到的 Symbol File 下载到 C:\Windows\Symbols 目录底下 (SRV*C:\Windows\Symbols*)
这样就完成了 Symbol File Path 的设定了
有时候会有很多其它状况, 例如 WinDBG 会说找不到呀,
解决方法就是 reload (Reload Module)
在 Symbol File Path 的设定对话盒下面有个 reload 的 CheckBox,
把它打勾, 然後按 [确定], 让它自动重新载入
另外, 你也可以使用内建指令 .reload , 快速的 Reload Module
三. 教你如何一次性的完整下载所有 Symbol Files
平常我们都只是在查看 Ntdll 的函数, 或者查看 Service Descriptor Table
这样 WinDBG 只会下载 ntdll.pdb 和 ntkrnlmp.pdb 或者 win32k.pdb 到 C:\Windows\Symbol
但其它的呢, 万一哪天要用到而 Micro$oft 又停止支援怎办, 嗯~把它一次通通下载到 C:\Windows\Symbol 好了
启动 DOS Command Line, 也就是 cmd.exe
[开始] -> [执行] -> 输入 cmd -> 按 [确定] , 会出现 DOS 的 Command Line 视窗
先跳进 WinDBG 安装目录
在 DOS 视窗输入 cd C:\Program Files\Debugging Tools for Windows (x86), 按 [Enter]
然後再输入
symchk.exe /r C:\Windows\system32 /s SRV*C:\Windows\Symbols* http://msdl.microsoft.com/download/symbols
按 [Enter] 後它就开始自动扫描和下载 C:\Windows\system32 目录下的档案的 Symbol File 到 C:\Windows\Symbols
当然你也可以扫描和下载其他目录下系统档案的 Symbol Files
例如扫描 .Net 的档案, 在 DOS 的Command Line 视窗输入
symchk.exe /r C:\WINDOWS\Microsoft.NET\Framework /s SRV*C:\Windows\Symbols* http://msdl.microsoft.com/download/symbols
但不建议放在同一个目录, 建议改放到 C:\Windows\NetSymbols
指令就变成
symchk.exe /r C:\WINDOWS\Microsoft.NET\Framework /s SRV*C:\Windows\NetSymbols* http://msdl.microsoft.com/download/symbols