0x01 前言
- Windbg 是微軟的正宗調試器,在正常的情況下調試一些程序並沒有什么問題,但是如果需要調試分析程序的堆棧,或者是一些特殊的功能時則需要微軟的符號文件的支持,所以符號文件是非常重要的,資源已經在結尾分享了
0x02 查找問題
- 微軟現在已經沒有了符號文件包可供下載,通通的改為公共符號服務器來下載符號文件,可能是因為版本太多,方便用戶而已
- 但是,盡管微軟已經改為符號文件服務器自動下載符號文件,但是 Windows XP 下卻下載失敗,原因是微軟已經停止了符號文件對 Windows XP 系統的支持(前幾個月還能用,招呼也不打一下子就停了)
- 按照原先的方法配置環境變量和 Symbol Search Path 路徑
- 之后輸入 !sym noisy 命令(查看細節),然后在輸入 .reload 命令重新下載文件,可以看到微軟的符號服務器根本沒有這個文件
- 缺少這個 ntdll.pdb 這個文件,只要去網上搜離線的 Symbols 文件下載下來就行了,頭疼的是全網真的只有 CSDN 下載有這個文件,而且還收費(最低需要充值 88,才能下載,真的黑),之后翻牆去谷歌搜,第一條竟然還是 CSDN 的下載地址,滑稽
- 之后經過努力,終於在一個人的分享下得到了 Symbols 文件,安裝這個文件,默認設置的路徑是 C:\WINDOW\Symbols 這個目錄下
- 之后看錯誤的信息,說明首先 Windbg 會檢查 C:\symbols\ntdll.pdb… 這個目錄下是否有 ntdll.pdb 文件,之后才會從符號文件服務器上去下載
- 這個文件在這個目錄,也就是剛剛下載默認的文件夾
- 之后在 C 盤新建和錯誤信息一模一樣的路徑,再把剛剛的符號文件復制到這個路徑就可以了
- 重新加載就發現可以了
- 查看堆棧信息,發現成功了
0x03 總結
- 利用 !sym noisy 命令可以清楚發現 Symbols 安裝到底在哪里出了問題,文中只是對 ntdll.pdb 文件進行了安裝,如果在調試過程中遇到其他問題,也可以用這種方法來解決
- 還有一個問題就是每次加載都要先設置 Symbols 的路徑,這里可以通過設置全局變量 _NT_SYMBOL_PATH 的方式來解決
- 這個附上資源文件:Windbg+Symbols 安裝包(提取碼:fvva)