——-WIN7 X64——-
本地内核调试
win7设置:
1、开启debug模式:管理员cmd界面输入
bcdedit /bootdebug ON bcdedit /debug ON bcdedit /dbgsettings serial baudrate:115200 debugport:1 bcdedit /copy {current} /d DebugEntry ::会返回一个字符串,用在下面两个地方 bcdedit /displayorder {current} {字符串} bcdedit /debug {字符串} ON
重启系统选择debug模式进入
2、设置windbg的符号路径:(以下3种方式都可以)
(1)在windbg的file->symbols file path里填写下面的路径
srv*c:\symbols*http://msdl.microsoft.com/download/symbols ::C:\symbols为要保存的符号位置,可以更改,不建议更改,关闭前勾选reload
(2)在win7的环境变量里添加:我的电脑右键属性->高级系统设置,环境变量,增加:
变量名: _NT_SYMBOL_PATH 路径:srv*c:\symbols*http://msdl.microsoft.com/download/symbols
(3)在运行起来的windbg命令窗口输入
.sympath srv*c:\symbols*http://msdl.microsoft.com/download/symbols ::不要忘记. .reload
3、运行debug:file->Kernel Debug->Local确定即可
可能出现的问题:
(1)提示只有windows XP才能调试

错误的用x86来调试x64的系统,更换为x64的windbg即可,网上的汉化版基本都是x86的,注意区分
基于虚拟机双机内核调试
为便于区分,以win10主机为例
1、win7设置同本地内核调试,关闭win7虚拟机,硬件配置里先移除打印机,之后添加串行端口,使用命名管道:\.\pipe\com_1
该端是服务器,另一端是应用程序

注:关闭虚拟机才可修改,挂起状态不属于关闭
2、设置windbg连接虚拟机,直接创建x64版本windbg的快捷方式,设置属性:
C:\Users\AlunX\Desktop\WinDbg(x64)\windbg.exe -b -k com:pipe,port=\\.\pipe\com_1,baud=115200,reconnect -y C:\symbols ::一定不要用srv*c:\symbols*http://msdl.microsoft.com/download/symbols,很多博客表示可以直接用 ::此为符号文件路径代替C:\symbols,但是会出现问题,此方法从服务器下载的pdb文件并不是适配win7,而是 ::适配win10主机,会导致无法找到符号表
3、解决符号表问题:
将x64的文件夹考到虚拟机里,cmd到该软件文件夹,输入如下命令下载需要用到的符号表
symchk.exe c:\windows\syswow64\ntoskrnl.exe /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols ::下载内核相关符号表
将下载好的文件从虚拟机复制到win10主机的C:/symbols
4、启动虚拟机,等开机后打开windbg,如果仍出现缺少ntkrnlmp.pdb的情况输入.reload即可。