0x01 前言
- Windbg 是微软的正宗调试器,在正常的情况下调试一些程序并没有什么问题,但是如果需要调试分析程序的堆栈,或者是一些特殊的功能时则需要微软的符号文件的支持,所以符号文件是非常重要的,资源已经在结尾分享了
0x02 查找问题
- 微软现在已经没有了符号文件包可供下载,通通的改为公共符号服务器来下载符号文件,可能是因为版本太多,方便用户而已
- 但是,尽管微软已经改为符号文件服务器自动下载符号文件,但是 Windows XP 下却下载失败,原因是微软已经停止了符号文件对 Windows XP 系统的支持(前几个月还能用,招呼也不打一下子就停了)
- 按照原先的方法配置环境变量和 Symbol Search Path 路径
- 之后输入 !sym noisy 命令(查看细节),然后在输入 .reload 命令重新下载文件,可以看到微软的符号服务器根本没有这个文件
- 缺少这个 ntdll.pdb 这个文件,只要去网上搜离线的 Symbols 文件下载下来就行了,头疼的是全网真的只有 CSDN 下载有这个文件,而且还收费(最低需要充值 88,才能下载,真的黑),之后FQ去谷歌搜,第一条竟然还是 CSDN 的下载地址,滑稽
- 之后经过努力,终于在一个人的分享下得到了 Symbols 文件,安装这个文件,默认设置的路径是 C:WINDOWSymbols 这个目录下
- 之后看错误的信息,说明首先 Windbg 会检查 C:symbols
tdll.pdb… 这个目录下是否有 ntdll.pdb 文件,之后才会从符号文件服务器上去下载
- 这个文件在这个目录,也就是刚刚下载默认的文件夹
- 之后在 C 盘新建和错误信息一模一样的路径,再把刚刚的符号文件复制到这个路径就可以了
- 重新加载就发现可以了
- 查看堆栈信息,发现成功了
0x03 总结
- 利用 !sym noisy 命令可以清楚发现 Symbols 安装到底在哪里出了问题,文中只是对 ntdll.pdb 文件进行了安装,如果在调试过程中遇到其他问题,也可以用这种方法来解决
- 还有一个问题就是每次加载都要先设置 Symbols 的路径,这里可以通过设置全局变量 _NT_SYMBOL_PATH 的方式来解决
- 这个附上资源文件:Windbg+Symbols 安装包(提取码:fvva)