参考链接:
单机调试
这个单机调试对于内核调试比较鸡肋,很多调试命令都执行不了,推荐使用双机调试
正常情况下,如果逆向debug windows kernel,你需要两台可以互相连通的windows机器,一台作为debuger(调试机),一台作为debugee(被调试机)
不过有一个叫做LiveKD
的工具,使用这个工具,你只需要一台机器即可对kernel进行debug
首先你需要安装sdk,本文的测试环境为windows 10,因此需要下载win10 sdk进行安装
sdk安装完成之后,使用everything定位到windbg.exe
的路径并将其添加到环境变量中
我的测试环境是x64的,所以我选择C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
想要进行kernel debug,你需要先执行两条命令
bcdedit /debug on
bcdedit /dbgsettings local
获取LiveKD工具:https://docs.microsoft.com/zh-cn/sysinternals/downloads/livekd
解压之后,以管理员身份打开cmd进入到该目录,执行livekd64 -w
至此,你就设置好windows kernel debug的环境了
双机调试
有些漏洞会导致机器BSOD(blue screen of death),整个计算机就直接崩溃重启了,不适合使用单机调试
什么弱智言论,明明是因为内核调试的话整个机器就HALT了,不用两个机器调也没法玩儿呀
双机调试的设置也比较简单,我比较喜欢通过网络进行调试,也有通过使用串口调试的方法,这里不做介绍
这里使用物理机和虚拟机进行双机调试,我虚拟机网卡是桥接模式,所以直接和物理机位于同一个网段
bcdedit /debug on
bcdedit /dbgsettings net hostip:192.168.100.28 port:50000 key:my.secure.key.here
bcdedit /set "{dbgsettings}" busparams 3.0.0
在debugee(被调试机)以管理员模式执行上面的命令即可,其中192.168.100.28
是debuger(调试机)的IP
3.0.0
这个参数可以在debugee中通过如下方式获取:
然后debuger启动windbg,File
->Kernel Debug...
,将端口号和key输进去就行了
windows7及以下版本
网络调试是从Windows8 (Server 2012)才开始有的,所以对于server 2008或者windows 7以及更早的版本需要使用串口调试,详细细节请查看这个视频: