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:在连接调试器成功后自动中断。
然后中间的选项为选择想用的调试器,右边则为手动打开调试器之类的选项。