您的位置:首页 > 其它

WinDbg 内核调试常用命令

2013-12-05 09:46 351 查看
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 切换进程








                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: