关闭

WinDbg 内核调试常用命令

635人阅读 评论(0) 收藏 举报
分类:

1. vertarget 命令可以显示目标系统的基本信息,如系统版本,计算机名,内核基质等


kd> vertarget
Windows 7 Kernel Version 7601 (Service Pack 1) MP (1 procs) Free x86 compatible
Built by: 7601.18113.x86fre.win7sp1_gdr.130318-1533
Machine Name:
Kernel base = 0x83e52000 PsLoadedModuleList = 0x83f9b4d0
Debug session time: Wed Dec  4 19:37:43.569 2013 (UTC + 8:00)
System Uptime: 0 days 1:06:58.651


从输出来看
目标机:  win7 sp1 
内核基质:0x83e52000
名字没有获取到


2. dg 命令主要显示【参数】的详细信息

kd> dg @fs
                                  P Si Gr Pr Lo
Sel    Base     Limit     Type    l ze an es ng Flags
---- -------- -------- ---------- - -- -- -- -- --------
0030 83f7cc00 00003748 DataRW    0 Bg By P  Nl 00000492




kd> dg @ds
                                  P Si Gr Pr Lo
Sel    Base     Limit     Type    l ze an es ng Flags
---- -------- -------- ---------- - -- -- -- -- --------
0023 00000000 ffffffff Data RW    3 Bg Pg P  Nl 00000cf2

范围大小


3.!cpuinfo 命令显示CPU信息


kd> !cpuinfo
CP  F/M/S Manufacturer  MHz PRCB Signature    MSR 8B Signature Features
 0  6,42,7 GenuineIntel 2793 0000001400000000  0000001400000000 a0cf3fff
                      Cached Update Signature 0000001400000000
                     Initial Update Signature 0000001400000000


4.!pcr命令显示处理器控制域信息(Processor Control Region),也就是KPCR结构信息,每个CPU对应一个KPCR结构,可以在命令中指定要显示的CPU序号,不能指定显示当前CPU的PCR信息。

kd> !pcr 0
KPCR for Processor 0 at 83f7cc00:
    Major 1 Minor 1
NtTib.ExceptionList: 83f790ac
   NtTib.StackBase: 00000000
  NtTib.StackLimit: 00000000
NtTib.SubSystemTib: 801e4000
     NtTib.Version: 001b4568
 NtTib.UserPointer: 00000001
     NtTib.SelfTib: 00000000


           SelfPcr: 83f7cc00
              Prcb: 83f7cd20
              Irql: 0000001f
               IRR: 00000000
               IDR: ffffffff
     InterruptMode: 00000000
               IDT: 80b95400
               GDT: 80b95000

               TSS: 801e4000


     CurrentThread: 83f86380
        NextThread: 00000000
        IdleThread: 83f86380
         DpcQueue: 

输出包括内核SEH链表头,TSS,IDT等重要信息。有了PCR地址,还可以通过dt命令直接显示KPCR机构,


kd> dt nt!_kpcr 83f7cc00
   +0x000 NtTib            : _NT_TIB
   +0x000 Used_ExceptionList : 0x83f790ac _EXCEPTION_REGISTRATION_RECORD
   +0x004 Used_StackBase   : (null) 
   +0x008 Spare2           : (null) 
   +0x00c TssCopy          : 0x801e4000 Void
   +0x010 ContextSwitches  : 0x1b4568
   +0x014 SetMemberCopy    : 1
   +0x018 Used_Self        : (null) 
   +0x01c SelfPcr          : 0x83f7cc00 _KPCR
   +0x020 Prcb             : 0x83f7cd20 _KPRCB
   +0x024 Irql             : 0x1f ''
   +0x028 IRR              : 0
   +0x02c IrrActive        : 0
   +0x030 IDR              : 0xffffffff
   +0x034 KdVersionBlock   : 0x83f7bc00 Void
   +0x038 IDT              : 0x80b95400 _KIDTENTRY
   +0x03c GDT              : 0x80b95000 _KGDTENTRY
   +0x040 TSS              : 0x801e4000 _KTSS
   +0x044 MajorVersion     : 1
   +0x046 MinorVersion     : 1
   +0x048 SetMember        : 1
   +0x04c StallScaleFactor : 0xae9
   +0x050 SpareUnused      : 0 ''
   +0x051 Number           : 0 ''
   +0x052 Spare0           : 0 ''
   +0x053 SecondLevelCacheAssociativity : 0 ''
   +0x054 VdmAlert         : 0
   +0x058 KernelReserved   : [14] 0
   +0x090 SecondLevelCacheSize : 0
   +0x094 HalReserved      : [16] 0x1000000
   +0x0d4 InterruptMode    : 0
   +0x0d8 Spare1           : 0 ''
   +0x0dc KernelReserved2  : [17] 0
   +0x120 PrcbData         : _KPRCB

5.!prcb命令显示KPRCB结构,里面包含了当前线程,IDLE线程等重要信息。同样可以用dt命令显示KPRCB详细信息


kd> !prcb
PRCB for Processor 0 at 83f7cd20:
Current IRQL -- 28
Threads--  Current 83f86380 Next 00000000 Idle 83f86380
Processor Index 0 Number (0, 0) GroupSetMember 1
Interrupt Count -- 0006cb65
Times -- Dpc    00000318 Interrupt 00000ac3 
         Kernel 0003fae6 User      000003cc 


6.!idt 命令显示终端服务表,可以指定中断显示,也可以显示全部
 !idt


Dumping IDT:


37: 83e35104 hal!PicSpuriousService37
51: 873882d8 serial!SerialCIsrSw (KINTERRUPT 87388280)
52: 87326058 pci!ExpressRootPortMessageRoutine (KINTERRUPT 87326000)
53: 8733ccd8 pci!ExpressRootPortMessageRoutine (KINTERRUPT 8733cc80)


7.!running 命令显示所有CPU上正在运行的线程信息,便于了解系统当前信息,蓝屏时可以看系统正在执行的什么线程
kd> !running


System Processors: (00000001) 
  Idle Processors: (00000001) 


All processors idle.


8. !process 显示进程信息,是个常用命令。可以显示EPROCESS,进程ID,句柄,页目录,线程列表


!process 0 0 显示进程列表,只显示每个进程的基本信息。
kd> !process 0 0 
**** NT ACTIVE PROCESS DUMP ****
PROCESS 865dc750  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 00185000  ObjectTable: 8a201ab0  HandleCount: 538.
    Image: System


!process XXXXXXX  显示指定进程的所有信息。!process XXXXXXX  0 则显示指定进程的基本信息


kd> !process 88699030 0
PROCESS 88699030  SessionId: 0  Cid: 0a40    Peb: 7ffd6000  ParentCid: 01f4
    DirBase: 3ed014c0  ObjectTable: 8ff68230  HandleCount: 360.
    Image: svchost.exe


9. .process 切换进程









   
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:37040次
    • 积分:905
    • 等级:
    • 排名:千里之外
    • 原创:51篇
    • 转载:23篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论