首页
社区
课程
招聘
[原创]本地内核调试环境搭建,就这么简单!
发表于: 2020-3-7 09:55 7922

[原创]本地内核调试环境搭建,就这么简单!

2020-3-7 09:55
7922

内核调试默认是关闭的,需要手动开启。本文将简单介绍如何在 Vista 及后续版本的系统中开启本地内核调试,并简要介绍使用 windbg 连接内核的方法。在 xp 系统中,对应的设置保存在 boot.ini 中,感兴趣的小伙伴儿请自行搜索设置方法。


windbg 不仅可以作为用户态调试器使用,还可以作为内核调试器使用。相较于命令行版本的 kd.exe,windbg 更友好。在 windbg 中,通过菜单 File -> Kernel Debug (Ctrl + K) 可以打开内核调试设置界面,如下图:

NET,USB,1394,COM 这四个选项是针对双机内核调试的,本文不涉及。Local 是本地内核调试用的,我们发现不用进行任何设置。点击 确定 按钮即可进行本地内核调试。

如果觉得上述操作太繁琐,我们可以以管理员权限运行 windbg.exe -kl 直接开启本地内核调试。


我们可能遇到下面的错误提示:

Local kernel debugging requires Administrative
privileges, and is not supported by WOW64.
Only a single local kernel debugging session can run at a time.
Local kernel debugging is disabled by default. You must run ‘bcdedit -debug on’ and reboot to enable it.

具体错误提示如下图:

根据错误提示,我们可以知道进行本地内核调试需要注意以下几点:

本地内核调试需要管理员权限。

不支持 WOW64。如果是 64 位系统,必须使用 64 位的 windbg。

同一时间只能建立一个本地内核调试会话。

本地内核调试默认是关闭的。需要通过 bcdedit /debug on 开启,重启生效。

按照提示,以管理员权限执行 bcdedit /debug on 。重启系统后,以管理员权限运行 windbg -kl 进行本地内核调试。如果顺利,我们就可以进行本地内核调试了。

我们也可以通过 msconfig 打开系统配置,在 引导高级选项 对话框中开启本地内核调试。具体设置过程请参考下图。

以管理员权限执行 bcdedit /debug on,如果顺利,会有操作成功的提示,如下图。

在某些机器的 win10 系统中,可能会遇到如下的提示。

正如 微软官方文档 里介绍的那样:

Before using bcdedit to change boot information you may need to temporarily suspend Windows security features such as BitLocker and Secure Boot on the test PC. You can re-enable Secure Boot once you’re done debugging and you’ve disabled kernel debugging on the local computer.

在使用 bcdedit 更改启动信息之前,我们可能需要暂时关闭 Windows 的安全特性,比如 BitLocker 和安全启动。

我电脑上的安全启动选项是启用的,如下图:

在 BIOS 里禁用安全启动后,重新执行 bcdedit /debug on 即可成功开启本地内核调试。

可以直接运行 bcdedit /? 查看帮助,通过 bcdedit /? command 查看每个命令的用法。

其实, bcdedit /debug on 的完整版是 bcdedit /debug [{ID}] { on | off },如果省略 {ID},默认取 {current}。如果想为其它系统设置,可以指定对应启动项的标识符。

执行 bcdedit /enum [{ID}] 可以列出指定 ID 对应的启动项, 如不指定 ID 可以列出所有的启动项。

执行 bcdedit /copy {ID} /d "description" 可以把当前的启动项复制一份。

执行 bcdedit /delete {ID} 可以删除指定 ID 对应的启动项。

在进行本地内核调试的时候,下面这些命令是不能执行的:

不知道大家平时是怎么截图的。是否用过键盘上的 PrtSc 键(一般在 F12 右侧)截图呢?也许有的小伙伴会问,截图键跟内核调试有什么关系?其实,在很多键盘上,PrtSc 和 SysRq 是同一个键。

当我们开启本地内核调试后,如果我们按 SysRq 键,系统会挂起。具体可以参考张老师的回帖。http://advdbg.org/forums/6537/ShowPost.aspx#6537。前几天访问高端调试论坛,发现挂了,今日终于能访问了,赶紧截图保存一份。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
感谢大佬 你qq多少啊 加你好友 不搭理啊 啥意思
2020-3-8 20:19
0
雪    币: 940
活跃值: (1053)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
virtualKD  了解一下
2020-3-9 15:21
0
雪    币: 300
活跃值: (2422)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mark
2020-3-9 21:42
0
雪    币: 8519
活跃值: (9122)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
5
红金龙e晓楼 virtualKD 了解一下
嗯,这个是本地内核调试。还用不到VirutalKD吧?本周五会简单介绍下使用VirutalKD进行双机调试的环境搭建。欢迎大佬指点。
2020-3-10 12:09
0
雪    币: 8519
活跃值: (9122)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
6
killpy 感谢大佬 你qq多少啊 加你好友 不搭理啊 啥意思
抱歉,大佬。我最近登录qq比较少。看到有一个好友请求,已经通过了。可以加我微信交流:BianChengNan。
2020-3-10 12:11
0
雪    币: 8377
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
内核调试我记得双机我搞了2天,真的麻烦,各种问题多多
2020-3-11 00:30
0
游客
登录 | 注册 方可回帖
返回
//