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

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

2020-3-7 09:55
8140

内核调试默认是关闭的,需要手动开启。本文将简单介绍如何在 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 键,系统会挂起。具体可以参考张老师的回帖。a49K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3q4V1N6X3c8T1k6#2)9J5k6h3!0J5k6#2)9J5c8X3k6G2M7Y4g2E0M7#2)9J5c8U0j5#2x3K6N6Q4x3V1k6e0K9r3!0%4f1r3!0K6N6q4)9J5k6h3q4K6M7s2S2Q4x3U0x3$3y4e0x3%4i4@1f1K6i4K6R3H3i4K6R3J5i4@1f1#2i4K6R3&6i4K6S2p5i4@1f1#2i4K6R3%4i4@1p5H3i4@1f1#2i4@1p5@1i4@1p5&6i4@1f1^5i4@1q4q4i4@1u0r3i4@1f1&6i4K6V1%4i4@1q4q4i4@1f1&6i4@1q4n7i4K6V1^5i4@1f1%4i4@1q4n7i4@1q4r3i4@1f1^5i4@1t1H3i4K6R3K6i4@1f1^5i4@1q4r3i4K6V1#2i4@1f1^5i4@1q4q4i4@1u0m8i4@1f1#2i4K6W2p5i4K6W2n7i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4K6S2r3i4K6V1I4i4@1f1%4i4K6S2q4i4@1t1H3i4@1f1$3i4K6S2o6i4K6R3J5i4@1f1@1i4@1u0m8i4K6R3$3i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1@1i4@1u0n7i4K6S2m8i4@1f1$3i4K6V1%4i4@1p5#2i4@1f1%4i4@1u0n7i4K6R3^5i4@1f1@1i4@1u0m8i4K6S2q4i4@1f1^5i4K6R3K6i4@1u0p5i4@1f1^5i4@1q4q4i4@1u0r3i4@1f1&6i4K6V1%4i4@1q4q4i4@1f1@1i4@1u0m8i4K6R3$3i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1^5i4@1t1#2i4@1t1$3i4@1f1%4i4@1t1@1i4@1p5%4i4@1f1$3i4K6R3^5i4@1q4m8i4@1f1#2i4K6W2n7i4@1u0q4i4@1f1@1i4@1u0r3i4K6W2p5i4@1f1#2i4@1q4p5i4K6V1^5i4@1f1@1i4@1t1^5i4K6R3H3i4@1f1@1i4@1u0n7i4@1u0p5i4@1f1K6i4K6R3H3i4K6R3J5


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

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