调式器

来源:互联网 发布:linux的中文是什么意思 编辑:程序博客网 时间:2024/04/26 03:57

学习笔记

image011

KdInitSystem
函数让内核调试引擎初始化

KiDebugRoutine
当系统分发异常时会调用KiDebugRoutine变量所指向的函数

KeUpdateRunTime
系统的时间更新函数

KdCheckForDebugBreak
检查调试器是否发出了中断命令

KdpBreakpointTable
内核调试引擎使用一个数组来记录断点

KdEnterDebugger
将系统内核中断到调试器

KdExitDebugger
从调试器回到系统内核

KdEnableDebugger
启用内核调试器

KdDisableDebugger
禁用内核调试器

KdChangeOption
访问和修改内核中与内核调试器有关的状态。

KdReportTraceData
与ETW机制配合将追踪数据通过内核调试通信输出到调试器所在的主机上

KdSendPacket
KDCOM函数,发送数据包

KdReceivePacket
KDCOM函数,接收数据包

KeNumberProcessors
全局变量,标记CPU个数

KiSystemStartup
Ntoskrnl.exe的入口函数,调用KiSystemStartup

KiSystemStartup
KiSystemStartup为每个CPU调用HalInitializeProcessor和KiInitializeKernel


KiInitializeKernel
本函数在系统刚刚被启动而没有被完全初始化前被调用,它将初始化系统数据结构(KiInitSystem),初始化idle线程和进程结构体(KeInitializeThread),初始化CPU控制块(KeInitializeProcess),调用ExpInitializeExecute函数,开始阶段0的进一步初始化工作。本函数在系统发现新的CPU时也将被调用。
VOID
KiInitializeKernel (
IN PKPROCESS Process,
IN PKTHREAD Thread,
IN PVOID IdleStack,
IN PKPRCB Prcb,
IN CCHAR Number,
PLOADER_PARAMETER_BLOCK LoaderBlock
)

ExpInitializeExecute
本函数在主引导CPU上执行HalInitSystem(HalInitSystem为每个CPU准备中断控制器,并配置系统时钟中断,用于CPU的计时工作)。然后启动系统中断,接下来的函数调用顺序如下
CmpInitSystemVersion->ExInitSystem->KeNumaInitialize->DbgLoadImageSymbols->CmpInitSystemVersion->
ExInitializeHandleTablePackage->ObInitSystem->SeInitSystem->PsInitSystem->PpInitSystem->DbgkInitialize

PsActiveProcessHead
全局变量,指向系统中的所有进程结构链表

SMSS.EXE
会话管理器进程。创建windows子系统和登录进程WinLogon.EXE。

WinLogon.EXE
创建LSASS本地安全子系统和系统服务进程Services.EXE

KdpDebuggerDataListHead
全局变量,调试器数据链表

KdDebuggerDataBlock
数据结构,该结构包含了内核基地址、模块链表指针、调试器数据链表指针等重要数据,调试器需要读取这些信息以了解目标系统

KdComPortInUse
全局变量,HAL模块中所定义的全局变量,记录下已被内核调试使用的COM端口

KdPitchDebugger

KdDebuggerEnabled
全局变量,用来标识内核调试是否被启用

KiDebugRoutine
函数指针,内核调试引擎的异常处理回调函数指针。当内核调试引擎活动时,它指向KdpTrap函数,否则指向KdpStub函数

KdpBreakpointTable
结构数组类型,用来记录代码断点,每个元素为一个BREAKPOINT_ENTRY结构,用来描述一个断点,包括断点地址。

原创粉丝点击