内核调试相关变量说明

来源:互联网 发布:梦里花落知多少李茉莉 编辑:程序博客网 时间:2024/06/08 09:36

image011

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


KiDebugRoutine
当系统分发异常时会调用KiDebugRoutine变量所指向的函数 KiDebugRoutine写入函数地址KdpStub(禁止调试) /KdpTrap(开启调试)


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
全局变量,用来标识内核调试是否被启用
开启调试状态:*(PBYTE)KdDebuggerEnabled=0x01;
禁止调试状态:*(PBYTE)KdDebuggerEnabled=0x00;


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


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



0 0
原创粉丝点击