内核调试引擎(Kernel Debug Engine,简称KD)是NT系列操作系统用于支持内核调试的软件模块,其主要代码与系统内核一起位于内核模块中。
内核调试器通过通信电缆与内核调试引擎进行通信以实现调试运行在内核模式中的代码。微软没有公开KD与调试器之间的通信协议和技术细节。但是理解这些内容对于学习内核调试和理解操作系统原理都是有意义的。《软件调试》一书的第18章详细的分析了内核调试的工作原理,并介绍了KD与调试器通信的详细过程和二者之间通信的通信协议。
KdTalker工具是《软件调试》的作者在NT 3.51 DDK中的KRNLDBG示例程序的基础上编写的。用于观察、分析、和诊断内核调试的对话过程。
上图显示的是KdTalker的一个工作场景。右侧的列表框用来显示程序的工作状态和通信过程。左侧的按钮用来执行各种动作,依次为:
Start - 启动通信线程,打开通信端口,向其发送复位包,并监视端口等待KD的回复;
Breakin - 发送中断包,让目标系统的内核中断下来;
Clear - 清除右侧列表框的所有内容;
Copy Sel - 复制右侧列表框中选中的内容;
Copy All - 复制右侧列表中的所有信息;
Quit - 退出程序。
目前版本的KdTalker支持串行口通信方式,而且要求主机端使用的是COM1端口。
|