WinDbg 安装配置
文章目录
最近开始研究 Windows 平台上的一些漏洞,研究就不免要去复现、调试,可是总感觉缺少顺手的工具。作为一个菜鸡加业余的二进制选手,题没做出来几个,工具玩着还算顺手。Linux 下便绕不过 GDB,虽说上手有一定难度,稍微熟悉后便会被其强大之处所折服。Win 这边还用着N年前停止维护的 OllyDbg,经常卡死而且速度着实令人捉鸡不说,原生不支持 x64 才是最大的嘈点。
久仰 WinDbg 大名,最近便打算恶补一波。其不但能够调试用户级代码,更是一款很好的内核调试工具(毕竟微软自家出品),调试分析转储文件也是不在话下。本篇文章主要分享一下 WinDbg 安装过程及踩坑的经过。
WinDbg 版本
首先和大家扯一下这个版本的问题。WinDbg 是 WDK(Windows Driver Kits,即 Windows 驱动开发包)的组件。对于不同版本的Windows,要下载不同版本的 WDK 来配合使用,这点来说是相对比较恼人的。WDK 是一个 ISO 镜像包,在其中一般可以找到 WinDbg 的安装包(一个 msi 程序),不知道单独安装是否可行(XP 下测试是可以滴,猜测其它也能如此)。
但是现在 WinDbg 有一个全新版本(对,你没听错,全新版本)叫 WinDbg Preview,脱离于 WDK 独立存在。优点如下:
- 具有现代的视觉效果(颜值很重要)
- 更加快速
- 成熟的脚本体验
缺点呢,我觉得只有一个:
- 只支持 Windows 10(UWP 应用,从微软商店下载)
如果使用 Win10,还是推荐使用这个版本的。
WinDbg 安装
安装过程比较简单,只要下载到了 WDK,一直下一步下一步就没啥问题了。在此附上各个版本 WDK 的链接:各个版本WDK地址。
而 WinDbg Preview 更简单了,出门左转微软商店搜索安装即可,一气呵成。
WinDbg 符号配置
符号介绍
WinDbg 的特殊之处就是需要配置符号,而配置符号也算一个大坑。所谓的符号文件,是被调试程序与源代码信息的对应,是为了调试而保存下来的信息,包括变量名、类型信息、函数签名和源代码行等等。而符号文件相信使用过 Visual Studio 的朋友都不陌生,就是那个后缀是 PDB 的文件(PDB 是目前很常用的一种符号格式,是微软自己定义的格式,当然还有其它格式的,此处就不多扯了)。
参考了网友的说法,符号文件可分为两类。一类是公共符号文件,即Windows系统组件的符号,如 kernel32.dll,ntdll.dll,notepad.exe 等之类的符号文件;剩下的即归为另一类,不由微软提供符号文件,可能是我们写的程序或动态链接库,或是第三方程序。简单说就是由微软提供的符号文件和不由微软提供的符号文件。
设置符号
而符号配置,可以说就是两点:
- 设置符号的查找位置
- 设置公共符号的下载保存位置
比较远古的时候,可以手动下载公共符号文件,现在早已被淘汰,目前都是配置 Symbol Server 的方式。而比较推荐使用环境变量设置,不但适合 WinDbg,且对于 Visual Studio,Process Explorer,Process Monitor都适用。
在控制面板中打开系统(或直接按 Win+Pause 组合键),点击高级系统设置,环境变量,即可修改环境变量。添加环境变量 _NT_SYMBOL_PATH,将其值设置为 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols,其中 C:\Symbols 为要保存的位置,可自行替换,设置好如下所示:
疑难杂症
到此便算配置好了,兴冲冲地打开 WinDbg 测试,却提示找不到符号,去保存符号的文件夹查看也是空空如也。随便查看个结构,如输入 !teb,却得到以下提示:
|
|
可见符号配置似乎存在问题。查阅了许多文章和博客,不觉得配置过程有什么问题。直到在微软的论坛上的一个 帖子 中找到了一些灵感。在命令窗口中输入 !sym noisy 可以查看详细的有关 Symbol 的输出,可以找到以下输出:
|
|
可见是网络不给力,挂代理后一切正常。真是一个小问题,却令人十分头疼。最后附上 WinDbg 运行起来的截图:
文章作者 Josephine
上次更新 2020-02-16