上一篇介绍了“GDK7+NanoCode调试学习系列3–中断Linux驱动i915.ko”本篇继续学习:
- 搭建使用Windbg通过NET来调试windows内核的环境;
- 同时,搭建使用NanoCode通过DCI来调试windows内核的环境;
本篇没有具体的调试驱动步骤,主要搭建调试环境。
准备工作:
查看目标GDK7是否支持NET调试
查看目标机的“系统信息”和对应的网卡设备的“硬件Id”,然后在 Supported Ethernet NICs for Network Kernel Debugging in Windows 10, Version 1909 (19H2) Build 18363 - Windows drivers | Microsoft Learn 上查询,说明支持NET调试。
设置目标机GDK7的调试选项
可根据此链接(Set Up KDNET Network Kernel Debugging Manually - Windows drivers | Microsoft Learn)来设置,如下:
目标机GDK7和调试主机在同一个网络下;
查看调试主机的IPv4地址,必须是IPv4;
目标机GDK7管理员打开cmd.exe,执行如下指令,同时记下生成的key;
bcdedit /debug on
bcdedit /dbgsettings net hostip:w.x.y.z port:n注:hostip是刚刚查询到的调试主机的IPv4
注:port是调试主机使用的连接端口号,使用一个未被使用的,推荐50000 - 50039,使用netstat -ano | findstr 50000来查询
执行完,会输出一个key,格式为x.x.x.x;官方推荐使用自动生成的key,但是也可以自定义,如下:
bcdedit /dbgsettings net hostip:w.x.y.z port:n key:x.x.x.x(可选)如果目标机有多个网络适配器,需要设置使用哪个网络适配器来调试,在网络适配器-属性-常规下看到b.d.f(总线.设备.功能),然后执行:
bcdedit /set “{dbgsettings}” busparams b.d.f至此,目标机设置结束,重启目标机。重启后,看设备管理器-网络适配器多了一个:
开始调试:
使用Windbg来连接调试
启动Windbg,选择内核调试-NET,填入上面设置的port和生成的key,确定执行;
不久,输出连接信息;
然后按下"Break",成功断下;
然后执行.reload, lm可以看到很多模块;
之后,可以使用命令来调试了~~~
使用NanoCode连接目标机
在Windbg下执行g重启跑来目标机。下面继续在Windbg调试内核的情况下,使用NanoCode也连接调试目标机。
启动NanoCode,选择“去调试”-内核调试:
点击确定之后,会自动连接并中断目标机;
执行.reload, lm也可以看到更多的模块了;
此时,我们可以查看一下kdnic的符号,执行x kdnic!*,输出很多符号。
Windbg和NanoCode双管齐下
至此,Windbg和NanoCode已经同时连接到一个目标机GDK7下,可以相互配合地调试了~
总结:
主要搭建使用Windbg和NanoCode同时调试一个目标机Windows的环境;
待续。。。
最后编辑:沈根成 更新时间:2024-12-09 10:54