https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/commands
.sympath H:\Symbol\LocalSymbol;srv*H:\Symbol\MicrosoftSymbol*https://msdl.microsoft.com/download/symbols -> 设备本地符号目录;从符号服务器获取文件并保存到指定目录
.reload /f -> 强制调试器立即加载符号。此参数覆盖延迟的符号加载。
dt -> 显示有关局部变量、全局变量或数据类型的信息,显示有关简单数据类型以及结构和联合的信息
dt nt!_eprocess -> 查看EPROCESS结构信息
dt nt!_kprocess -> 查看KPROCESS结构信息
dt nt!_ethread -> 查看ETHREAD结构信息
dt nt!_kthread -> 查看KTHREAD结构信息
dt nt!_irp -> 查看IRP结构信息
dt nt!_kevent -> 查看KEVENT结构信息
dt nt!_kmutant -> KMUTANT 结构信息
dt nt!_ksemaphore -> 查看KSEMAPHORE结构信息
dt _teb -> 查看TEB结构信息
dt _nt_tib -> 查看NT_TIB结构信息
dt _peb -> 查看PEB结构信息
dt _LDR_DATA_TABLE_ENTRY -> 查看_LDR_DATA_TABLE_ENTRY结构信息,用于遍历内核模块
!teb -> 查看TEB的信息
!peb -> 查看PEB的信息
!thread -> 查看线程信息
!process -> 查看进程信息
!process 0 0 -> 显示所有进程与其最小数量的信息;语法!process process [flag]
!irp -> 显示有关I/O请求数据包(IRP)的信息。
!irpfind -> 显示当前在目标系统中分配的所有I/O请求数据包(IRP)或与指定搜索条件匹配的IRPs的信息
!job -> 显示作业对象
!session -> 控制会话上下文。它还可以显示所有用户会话的列表。
!vm -> 显示关于目标系统上的虚拟内存使用统计信息的摘要信息。
x86
SSDT查看
x nt!kes*des*table*
dd addressA //上一步的地址
dds addressB L11C //上一步中获取的地址
Shadow SSDT查看
运行mspaint.exe //加载win32k.sys
!process 0 0 //查询mspaint.exe的EPROCESS
.process /p mspaint //切换至mspaint进程
x nt!kes*des*table*
dd addressA //上一步的地址
dds addressB L11C //上一步中获取的地址
x64
SSDT查看
x nt!kes*des*table*
dqs addressA //上一步的地址
dd addressB //上一步中获取的地址 SSDT
u addressB + ([addressB]>>4) //SSDT + ([SSDT*4]>>4) = 函数起始地址
Shadow SSDT查看
运行mspaint.exe //加载win32k.sys
!process 0 0 //查询mspaint.exe的EPROCESS
.process /p mspaint //切换至mspaint进程
x nt!kes*des*table*
dqs addressA //上一步的地址
dd addressB //上一步中获取的地址 SSDT
u addressB + ([addressB]>>4) //SSDT + ([SSDT*4]>>4) = 函数起始地址