天天看點

windbg常用的檢視指令

1、dt  檢視結構内容

   dt + 結構體名稱   或者 dt + 結構體名稱 + 位址

kd> dt _object_header
nt!_OBJECT_HEADER
   +0x000 PointerCount     : Int4B
   +0x004 HandleCount      : Int4B
   +0x004 NextToFree       : Ptr32 Void
   +0x008 Type             : Ptr32 _OBJECT_TYPE
   +0x00c NameInfoOffset   : UChar
   +0x00d HandleInfoOffset : UChar
   +0x00e QuotaInfoOffset  : UChar
   +0x00f Flags            : UChar
   +0x010 ObjectCreateInfo : Ptr32 _OBJECT_CREATE_INFORMATION
   +0x010 QuotaBlockCharged : Ptr32 Void
   +0x014 SecurityDescriptor : Ptr32 Void
   +0x018 Body             : _QUAD
           
kd> dt _object_header 0x88132d58  //此位址我本機某對象頭的位址
nt!_OBJECT_HEADER
   +0x000 PointerCount     : 2
   +0x004 HandleCount      : 0
   +0x004 NextToFree       : (null) 
   +0x008 Type             : 0x884ee288 _OBJECT_TYPE
   +0x00c NameInfoOffset   : 0x10 ''
   +0x00d HandleInfoOffset : 0 ''
   +0x00e QuotaInfoOffset  : 0x20 ' '
   +0x00f Flags            : 0x1a ''
   +0x010 ObjectCreateInfo : 0x00000001 _OBJECT_CREATE_INFORMATION
   +0x010 QuotaBlockCharged : 0x00000001 
   +0x014 SecurityDescriptor : (null) 
   +0x018 Body             : _QUAD
           
kd> dt _OBJECT_HEADER_NAME_INFO 0x88132d48  //對象名
nt!_OBJECT_HEADER_NAME_INFO
   +0x000 Directory        : 0xe10067f0 _OBJECT_DIRECTORY
   +0x004 Name             : _UNICODE_STRING "KeRead"
   +0x00c QueryReferences  : 1
           
kd> dt _UNICODE_STRING 0x88132d4C
nt!_UNICODE_STRING
 "KeRead"
   +0x000 Length           : 0xc
   +0x002 MaximumLength    : 0xc
   +0x004 Buffer           : 0xe2164968  "KeRead"
           

2、dd等 将記憶體位址的内容以 四位元組等顯示出來

    dd + 位址

dd e2164968
e2164968  0065004b 00650052 00640061 5112730d
e2164978  00080403 e24e4d43 e2164a80 e216b008
e2164988  00000000 417b0026 36334444 2d384141
e2164998  41313537 3735342d 32412d39 442d3636
e21649a8  35463636 43323032 7d424243 00000000
e21649b8  0c080408 e24e4d43 00010001 3aabe829
e21649c8  00000000 417b0026 43364344 2d383842
e21649d8  43343234 4431312d 35392d32 302d4132
           
dd e2164968 l10    // 不是110  是 L的小寫l -- l10
e2164968  0065004b 00650052 00640061 5112730d
e2164978  00080403 e24e4d43 e2164a80 e216b008
e2164988  00000000 417b0026 36334444 2d384141
e2164998  41313537 3735342d 32412d39 442d3636
           
3、da、du将記憶體位址的内容以ascii或unicode形式讀取
           
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">kd> da e2164968</span>
           
e2164968  "K"
kd> da e2164969
e2164969  ""
kd> da e216496a
e216496a  "e"
kd> da e216496b
e216496b  ""
kd> da e216496c
e216496c  "R"
kd> da e216496d
e216496d  ""
kd> da e216496e
e216496e  "e"
kd> da e216496f
e216496f  ""
kd> da e2164970
e2164970  "a"
           
kd> du e2164968
e2164968  "KeRead猍儒?.?.?.?."
           

一些常用指令,就不逐個測試了:

  1. da 按照ASCII字元串讀取
  2. db 按照單位元組和ASCII字元串讀取
  3. dc 按照4位元組和ASCII字元串讀取
  4. dd 按照4位元組讀取
  5. dD 按照雙浮點(8位元組)格式讀取
  6. df 按照單浮點(4位元組)格式讀取
  7. dp 按照指針(32位系統讀取4位元組,64位系統讀取8位元組)格式讀取
  8. dq 按照8位元組讀取
  9. du 按照Unicode字元串讀取
  10. dw 按照2位元組讀取
  11. dW 按照2位元組和ASCII字元串讀取
  12. dyb 按照單位元組和二進制讀取
  13. dyd 按照4位元組和二進制讀取 

繼續閱讀