Windbg的使用之内核调试
本地内核调试
- 以管理员命令运行cmd开启本地内核调试
bcdedit /debug ON
bcdedit /dbgsettings local
- 新建或更改原来引导的高级选项:
3.Windbg
Ctrl+K选择loacl模式
双机调试
一台主机调试另一台主机,就是双机调试。
配置双机调试有着多种方式,根据需要自行选择双机调试方式。
准备工作:
-
一个安装了windows操作系统的虚拟机
-
需要一个windbg,要求与被调试机器的位数一样
一、使用串行端口进行调试
- 添加debug调试模式
确认虚拟机是否有空闲的串口,没有空闲串口的话,会导致设置串口命令失败,以至于调试不成功。
有的情况下使用以下命令:(有打印机的情况下改com1为com2)
粘贴板 :需要将ID改为第一个生成的引导ID,实在不知道的可以看下面的解释
bcdedit /copy {current} /d debug
bcdedit /displayorder {0f5d104d-61af-11ef-a516-f6e667248ef6} /addlast
bcdedit /dbgsettings SERIAL DEBUGPORT:2 BAUDRATE:115200
bcdedit /bootdebug {0f5d104d-61af-11ef-a516-f6e667248ef6} ON
bcdedit /debug {0f5d104d-61af-11ef-a516-f6e667248ef6} ON
bcdedit /timeout 30
环境变量配置(网速快选择)
_NT_SYMBOL_PATH
SRV*E:\symbol* https://msdl.microsoft.com/download/symbols
解释,想看看,不看也罢
bcdedit
Boot Configuration Data (BCD) 编辑器的命令行工具,用于管理启动配置数据。
bcdedit /copy {current} /d debug
复制当前引导为新引导,新引导文件名:debug
进入msconfig查看引导进行确认
bcdedit /displayorder {**6ebe99f0-cf67-11eb-99ea-000c2915a63a**} /addlast
添加到重启时引导显示的末尾,仅仅复制并不会在重启引导显示出来。这个ID是新引导生成的。
/displayorder: 该选项用来设置或查看启动菜单中显示的启动条目的顺序。
/addlast: 将指定的启动条目添加到显示顺序的末尾。
bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200
设置系统通过串行端口(COM1)以 115200 波特率进行内核调试。
bcdedit /bootdebug {**6ebe99f0-cf67-11eb-99ea-000c2915a63a**} ON
/bootdebug: 该选项用来控制是否为选定的启动项启用或禁用引导调试。
`ON`: 启用引导调试。
bcdedit /debug {**6ebe99f0-cf67-11eb-99ea-000c2915a63a**} ON
用于启用指定启动加载项的内核调试功能。
bcdedit /timeout 30
设置 Windows 启动管理器在自动启动默认操作系统前的等待时间。
-
Windbg快捷方式设置
//Windbg快捷方式-->右键属性-->目标 插入 -y 以及之后的内容。(有符号也可以从-b开始) "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\windbg.exe" -y SRV*E:\symbol*http://msdl.microsoft.com/download/symbols -b -k com:port=//./pipe/com_1,baud=115200,pipe
-
检查
确定三张图串口名称保持一致
- 登录成功之后
加载符号表
lm #查看符号有没有下载成功
ld * #加载所有符号表
二、使用双机调试工具 VirtualKD
使用 VirtualKD:
- 在目标机器中安装选项目标包
- 物理主机开启 VirtualKD
- 开启虚拟机,选择调试模式,选择禁用驱动签名
下载地址:VirtualKD - 下载
第一步、VirtualKD环境介绍
第二步: 打开虚拟机
- 注:关键字(VT)(虚拟化)(CPU),重启进入BIOS,到CPU选项开启 VT
第三步:配置windbg
在安装完WDK开发工具包之后,里面含有Windbg
WinDbg的目录是固定的,如下所示:
-
x86:C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\WinDbg.exe
-
x64C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\WinDbg.exe
第四步: 连接到虚拟机
第五步: 设置调试符号
srv*D:\symbowin10_64_NEW*http://msdl.microsoft.com/download/symbols
-
srv*D:\symbowin10_64_NEW: 符号文件在本地的存储路径
修复WinDBG符号问题(万能方法)
// Step1. 设置WinDBG符号服务器及本地符号文件目录
kd> .sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
// Step2. 使得WinDBG在获得符号的时候取得更多的信息
kd> !sym noisy
// Step3. 查看Windows的ntoskrnl模块
kd> !lmi
// Step4. 重新加载符号(/f为无视延迟加载项,强制立即重新加载)
kd> .reload /f