首页
社区
课程
招聘
[原创]本地内核调试神器 —— livekd 使用总结
发表于: 2020-4-16 23:48 9409

[原创]本地内核调试神器 —— livekd 使用总结

2020-4-16 23:48
9409

说明:本文很早就发布在我的博客上了,当时总结的有些问题,本次重新整理完善后再次发布。

有时候我们非常想知道当前系统内核的一些状态,比如查看当前系统加载了哪些驱动,查看某个进程外 COM 调用卡在哪里了,等等。如果我们可以调试系统内核,或者抓取一个系统转储来做事后调试,该多好啊。我们可以通过如下方法得到系统转储:

以上几种方案中,使用 livekd 最方便快捷。如果有哪位小伙伴儿对其它几种方法感兴趣,可以查看之前的转储系列文章。为了能顺利使用 livekd,我们需要解决几个问题。

可以运行 livekd -? 来查看使用方法。


1. 使用 livekd 进行本地内核调试,需要管理员权限,没以管理员权限运行会给出对应的错误提示。


2. livekd 需要内核文件的调试符号的支持。
可以通过环境变量 _NT_SYMBOL_PATH 来告诉 livekd 到哪里加载调试符号。如果没设置也没关系,livekd 会自动下载需要的调试符号到某个位置,遇到下图的情况,输入y即可。

也可以通过命令行参数 -y 来指定符号路径。与使用 _NT_SYMBOL_PATH 效果一样。最好设置环境变量 _NT_SYMBOL_PATH,对所有调试器都有用。

我本地的设置为:_NT_SYMBOL_PATH=SRV*C:\mssymbols\*http://msdl.microsoft.com/download/symbols


3. livekd 需要内核调试器(kd.exe 或 windbg.exe)的支持,可以通过命令行参数 -k 指定 kd.exe 的完整路径。通过 -k 参数指定 kd.exe 的路径的时候,如果有空格,需要用""包起来,否则可能报如下错误:


4. 下载符号文件需要 symsrv.dll 和 dbghelp.dll 的支持,请确保 livekd 可以顺利加载这两个文件。

如果出现上图中的错误,请按照提示加上 -vsym 再次运行,可以查看到更详细的问题。我这里是因为不能加载 symsrv.dll 导致的。


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

收藏
免费 5
支持
分享
最新回复 (6)
雪    币: 288
活跃值: (269)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
感受到了调试带来的快感
2020-4-17 09:37
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
3
感谢分享哦~
2020-4-17 09:51
0
雪    币: 3738
活跃值: (3872)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
感谢分享!
2020-4-17 10:04
0
雪    币: 114
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
菜鸟想麻烦请问一下,可以正常使用之后,命令是和Windbg一样吗?还是需要创建本地系统的Dump,然后分析Dump。可以直接使用什么命令来查看一些系统的结构吗?
2020-9-7 11:10
0
雪    币: 8519
活跃值: (9122)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
6
路远_人尚在 菜鸟想麻烦请问一下,可以正常使用之后,命令是和Windbg一样吗?还是需要创建本地系统的Dump,然后分析Dump。可以直接使用什么命令来查看一些系统的结构吗?
如果 -k 的时候指定的是 windbg 的路径,那么没问题。如果指定的是 kd.exe 的路径,绝大多数大部分命令也是可以用的。具体哪些命令不可用,我没试验过。

livekd 也会先产生一份 dump 的,后续的分析都是基于产生的 dump 文件,而不是实时的系统状态。
2020-9-13 22:15
0
雪    币: 114
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
编程难 如果 -k 的时候指定的是 windbg 的路径,那么没问题。如果指定的是 kd.exe 的路径,绝大多数大部分命令也是可以用的。具体哪些命令不可用,我没试验过。 livekd 也会先产生一份 ...
好的,多谢解惑,我之后再尝试一下
2020-11-13 18:18
0
游客
登录 | 注册 方可回帖
返回
//