先说下单机内核调试的模型:
单机内核调试,即在同一个系统中进行内核调试,这中间比较出名的调试工具有SoftICE和Syser.
而windbg的本地内核调试只是通过ZwSystemDebugControl()函数来实现相应的查看功能,
并不能进行下断点,跟踪,执行.并不属于严格意义上的单机内核调试.
一个单机内核调试模型图,大致如下:
+-----------------------------------------------------------------------------+
+ (目标机器 Target Computer) +
+----------------------(调试程序)----------------(应用程序)------------------- +
++===============User-Mode====Kernel-Mode=============++
+(内核模块,操作系统内核,驱动程序等) +
+----------------------(显示设备驱动) (输入设备驱动)-------------------------- +
+---------------------(中断处理列程,主要是针对键盘鼠标,以及int1,int3之类的)----+
+---------------------(硬件和固件)--------------------------------------------+
@中断处理函数:
接收和处理CPU的中断和异常,特别是与调试相关的异常(INT1,INT3等),以及与输入输出相关的异常.
@显示设备设备驱动和输入设备驱动:
为了能在被调试系统被中断的时候,调试器能够与用户进行交互--接收输入,显示输出,所以调试器通常
要在系统中安装自己的输入输出驱动程序,包括鼠标,键盘和显卡.
PS 一点关于Kernel Debugger 调试的资源和链接(thanks for Robinh00d):
基于VT的hyperdbg http://code.google.com/p/hyperdbg/ LINUX下的linice http://www.linice.com rr0d http://rr0d.droids-corp.org/ bugchecker http://bugchecker.com 基于硬件虚拟化的调试器 http://code.google.com/p/virtdbg/ Live Kernel-Mode Debugger http://code.google.com/p/ngdbg/ OpenDbg http://code.google.com/p/opendbg/ MDB http://code.google.com/p/merkeydebugger/ aphrodite-dbg http://code.google.com/p/aphrodite-dbg/ AADP反反调试插件 http://code.google.com/p/aadp/ 虚拟机-恶意程式攻防的新战场 http://www.hitcon.org/hit2010/download/6_New%20Battlefield%20For%20Malware%20Game.pdf 反汇编引擎 disorm http://code.google.com/p/distorm/ http://code.google.com/p/libdasm/ •Distorm64 •BeaEngine •libdisasm •Hacker Disassembler Engine •libdisassemble •Udis86