调试环境搭建
用网线把目标机器和主机直连 ,并且手动为它们的有线网卡配制IP地址,且主机和目标机器IP地址必须ipv4格式。
要求:被调试的目标机器必须是win8或是Windows Server 2012及以上系统(win8的system32目录下有个kdnet.dll,正是这个库支持的网络调试)
目标机器必须网卡支持才能进行网络内核调试,查询是否支持的方法
打开设备管理器,找着网络适配器,找着本地的有线网卡右键属性然后选中详细信息选项卡,再在其属性
下拉列表框中选择硬件id,然后在 https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn337010.aspx上查询该网卡是否支持网络内核调试。
设置目标机器步骤
1 、在CMD下,以管理员权限分别执行命令
bcdedit /debug on
bcdedit /dbgsettings net hostip:w.x.y.z port:n
w.x.y.z为调试端的IP地址,n为调试端的端口号.
端口号应从动态和/或私有端口(Dynamic and/or Private Ports):端口号从49152到65535中选择一个未被占用的端口。
可在cmd中netstat -ano枚举端口后查看空闲端口,也可以netstat -aon | findstr 50000直接查看某个指定端口是否被占用。
注意:如果执行第一条命令失败且提示信息为尝试修改调试程序设置出错,可能是UEFI启动方式。该值受安全引导策略保 护,无法进行修改或删除。解决办法是进入BIOS中,把“secure boot”设为“disable”.
2 、此时会生成一个key,在你网络调试中需要用到该key,所以把该值保存下来。当然该key也可 以指定Key,方法如下:
bcdedit /dbgsettings net hostip:w.x.y.zport:nkey:Key
key格式为:X.Y.Z.Q 其中X Y Z Q 必须为数字和字母的组合不可以由特殊符号
3 bcdedit /set testsigning on
4、 bcdedit /set "{dbgsettings}" busparams b.d.f
b d f是在设备管理器中,选中网络适配器找到你要使用的有线网卡,然后在常规选项卡中, 那个位置里b
为PCI总线,d为设备,f为功能。
4 、然后重启目标机器
主机端的话打开windbg,在File菜单下选择Kernel Debugging,然后切换到NET选项卡,正确填写端口号
和key的值点确定即可。
如果windbg输出“KDNET protocol version unsupported. You may need to upgrade your
debugger.”说明你用的windbg版本太低,需要用更新的版本。下载新的SDK,然后只选择Debug Tools进行安装。
最后一点 windbg连接的时间稍微有点长耐心等待即可。