Windows内核双机调试
传统模式BCD搭建
1、系统设置
打开CMD,输入下列指令后回车,会得到一个 {ID}。
1 | bcdedit /copy {current} /d DebugEntry |
将{ID}代入下列两个指令中运行。
1 | bcdedit /displayorder {current} {ID} |
然后Ctrl+R,输入msconfig,点击引导,在选中刚刚创建的DebugEntry,然后点击高级选项。

打勾调试端口并选择,一个COM,然后勾上波特率,选中115200。

2、虚拟机设置
点击编辑虚拟机设置。

如果有打印机就移除打印机,然后添加一个串口,然后设置如下图,其中管道名的com_1为在系统中设置的端口,COMX就写为com_x。

3、WinDbg设置
打开 File-Kernel Debug

然后点击COM,把虚拟机填写的内容填到对应位置。

然后点击确定。

提示Waiting to reconnect后,开始打开虚拟机,选择Debug Entry。

此时会连接到Windbg。

调试
在代码中添加一个int3或者调用KbBreakPoint函数后编译,扔到虚拟机加载,当DriverEntry被调用后会断在设置了断点的位置。
符号文件
打开 File-Symbol File Path

输入
1 | srv*c:\symbols*http://msdl.microsoft.com/download/symbols |
C:\symbols表示的是下载的符号文件所存放的路径。

输入完毕后点击.Reload,点OK。(需要梯子)
https://blog.csdn.net/qq_41252520/article/details/123095105
VirtualKD双击调试
VKD为内核加速器,因为Bcdedit方式搭建的双击调试环境有时候会很卡,不利于调试。
1、虚拟机设置
VKD(VirtualKD)有两个版本:官方版本和修改版本,其中官方版本在VM>=15时会出现无法连接虚拟机情况,而修改版修复了该问题。
1 | VKD:http://sysprogs.com/legacy/virtualkd/ |
下载好安装包后,打开虚拟机,拖动对应版本的安装包到虚拟机中。

然后运行安装包,一直下一步即可。
在选择启动项时注意要F8进入安全模式选择禁止驱动签名,这样在编写驱动时无需加载签名即可调试启动。
2、本机设置

- Start debugger automatically:自动连接到调试器。当虚拟机打开后,VMMonitor会自动检测虚拟机是否开启,然后自动打开调试器连接。
- Stop debugger automatically:与上边相反。
- DbgBreakPoint() on start:在连接调试器成功后自动中断。
然后中间的选项为选择想用的调试器,右边则为手动打开调试器之类的选项。