欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

windbg符号路径设置

程序员文章站 2022-07-15 14:22:00
...

0x00 前言

windbg没有引入符号文件(pdb)会导致系统库上的变量,堆栈等信息无法显示。

0x01 简介

PDB(Program Database),是微软开发的用于存储程序调试信息的文件格式。pdb文件是由源码在编译期生成,存储了源文件名称,变量名,函数名,FPO(帧指针),对应行号等信息。由于体积庞大,同时出于安全性考虑,可运行程序exe或者dll文件都是无符号的。

在windbg中运行无符号程序,会得到如下错误提示:

*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: ntdll!_HEAP_ENTRY                             ***
***                                                                   ***
*************************************************************************
Invalid type information

0x02 配置符号文件

方法一:

在windbg的命令行中直接输入:

0:040> .sympath SRV*c:\localsymbols*http://msdl.microsoft.com/download/symbols
0:040> .reload

这种使用url的方法最为推荐,因为符号文件会从微软服务器上自动拖拽,并永久缓存。
其中,c:\localsymbols如果不存在该目录,windbg会自动创建。

方法二:

Ctrl+s在弹出的窗口中输入你的符号路径:

SRV*c:\localsymbols*http://msdl.microsoft.com/download/symbols

图中reload也是必须的。
windbg符号路径设置

方法三 离线符号文件下载

这种方法已经失效,网址如下:
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-symbols
微软从2018年5月份开始已经不再提供离线符号文件。提及离线的原因是,网上很多老贴会说用方法三,其实已经过期无效了。
windbg符号路径设置

方法四 注册表和环境变量

修改注册表和环境变量都可以,不过不常用,就不说了(LZ太懒了)

0x03 常用命令

开启符号文件加载信息的详细输出

0:000> !sym noisy

加载符号文件

0:000> .sympath srv*c:\symstore.pri*http://msdl.microsoft.com/download/symbols

重新加载应用程序中用到的所有模块

0:000> .reload /f

测试一个符号文件对某个模块的有效性

0:000> !chksym ntdll.dll

0x04 一些软件的符号仓库

Crhome: https://chromium-browser-symsrv.commondatastorage.googleapis.com
Firefox: https://symbols.mozilla.org/
Nvidia: https://driver-symbols.nvidia.com/
AMD: https://download.amd.com/dir/bin

0x05 参考文献

https://en.wikipedia.org/wiki/Program_database
https://msdn.microsoft.com/zh-cn/library/ms241613.aspx
https://blog.csdn.net/hgy413/article/details/7555378
https://blog.csdn.net/witxjp/article/details/8118481
https://blog.csdn.net/bcbobo21cn/article/details/51683137
https://developer.mozilla.org/en-US/docs/Mozilla/Using_the_Mozilla_symbol_server
https://www.chromium.org/developers/how-tos/debugging-on-windows/windbg-help