dt命令顯示局部變量、全局變量或數據類型的信息。它也可以僅顯示數據類型。即結構和聯合(union)的信息。
0: kd> dt _PEB
- nt!_PEB
- +0x000 InheritedAddressSpace : UChar
- +0x001 ReadImageFileExecOptions : UChar
- +0x002 BeingDebugged : UChar
- +0x003 SpareBool : UChar
- +0x004 Mutant : Ptr32 Void
- +0x008 ImageBaseAddress : Ptr32 Void
- +0x00c Ldr : Ptr32 _PEB_LDR_DATA
- +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS_PARAMETERS
- [...]
dt查看特定地址的eprocess結構內容
- 0: kd> dt _EPROCESS 8055d0c0
- ntdll!_EPROCESS
- +0x000 Pcb : _KPROCESS
- [...]
- +0x160 PhysicalVadList : _LIST_ENTRY [ 0x8055d220 - 0x8055d220 ]
- +0x168 PageDirectoryPte : _HARDWARE_PTE_X86
- +0x168 Filler : 0
- +0x170 Session : (null)
- +0x174 ImageFileName : [16] "Idle"
- +0x184 JobLinks : _LIST_ENTRY [ 0x0 - 0x0 ]
- +0x18c LockedPagesList : (null)
- +0x190 ThreadListHead : _LIST_ENTRY [ 0x8055d250 - 0x8055d250 ]
- +0x198 SecurityPort : (null)
- [...]
dt通配符顯示模塊結構名稱
kd> dt ntdll!_peb*
ntdll!_PEB
ntdll!_PEB_LDR_DATA
ntdll!_PEB_FREE_BLOCK
d*命令顯示給定范圍內存的內容。
d, da, db, dc, dd, dD, df, dp, dq, du, dw, dW, dyb, dyd (Display Memory)
如果省略掉Range ,命令將會從上一條內存查看命令結束的位置開始。這使得可以連續的進行內存查看。
d這種顯示的格式和最近一次d*命令的格式相同。如果之前沒有使用過d*命令,d 和db 的效果相同。
注意d重復前一個以d開頭的命令。包括dda、ddp、ddu、dpa、dpp、dpu、dqa、dqp、dqu、dds、dps、dqs、ds、dS、dg、dl、dt和dv,以及本頁中的顯示命令。如果在d之后的參數不適當,可能會產生錯誤。
- 7c92120e cc c3 8b ff cc c3 8b ff-8b 44 24 04 cc c2 04 00 .........D$.....
- 7c92121e 64 a1 18 00 00 00 c3 57-8b 7c 24 0c 8b 54 24 08 d......W.|$..T$.
- 7c92122e c7 02 00 00 00 00 89 7a-04 0b ff 74 1e 83 c9 ff .......z...t....
- 7c92123e 33 c0 f2 ae f7 d1 81 f9-ff ff 00 00 76 05 b9 ff 3...........v...
- 7c92124e ff 00 00 66 89 4a 02 49-66 89 0a 5f c2 08 00 57 ...f.J.If.._...W
- 7c92125e 8b 7c 24 0c 8b 54 24 08-c7 02 00 00 00 00 89 7a .|$..T$........z
- 7c92126e 04 0b ff 74 1e 83 c9 ff-33 c0 f2 ae f7 d1 81 f9 ...t....3.......
- 7c92127e ff ff 00 00 76 05 b9 ff-ff 00 00 66 89 4a 02 49 ....v......f.J.I
- 0:001> d
- 7c92128e 66 89 0a 5f c2 08 00 57-8b 7c 24 0c 8b 54 24 08 f.._...W.|$..T$.
- 7c92129e c7 02 00 00 00 00 89 7a-04 0b ff 74 22 83 c9 ff .......z...t"...
- 7c9212ae 33 c0 66 f2 af f7 d1 d1-e1 81 f9 fe ff 00 00 76 3.f............v
- 7c9212be 05 b9 fe ff 00 00 66 89-4a 02 49 49 66 89 0a 5f ......f.J.IIf.._
- 7c9212ce c2 08 00 83 ec 0c dd 14-24 e8 bf cf 00 00 e8 0d ........$.......
- 7c9212de 00 00 00 83 c4 0c c3 8d-54 24 04 e8 6a cf 00 00 ........T$..j...
- 7c9212ee 52 9b d9 3c 24 74 50 66-81 3c 24 7f 02 74 06 d9 R..<$tPf.<$..t..
- 7c9212fe 2d 5c e7 92 7c d9 fe 9b-df e0 9e 7a 1d 83 3d ac -\..|......z..=.
我們可以看出第二個d顯示的地址是前面的地址的延續
da:ASCII 字符每行最多48個字符。顯示一直繼續直到遇到第一個null字節或者到達range 值指定的所有字符都已經顯示。所有不可打印字符,如回車和換行都被顯示為點號(.)。
- eax=00000009 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005
- eip=7c92120e esp=00c1ffcc ebp=00c1fff4 iopl=0 nv up ei pl zr na pe nc
- cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
- ntdll!DbgBreakPoint:
- 7c92120e cc int 3
- 0:001> da ebp
- 00c1fff4 ""
- 0:001> da
- 00c1fff5 ""
- </SPAN>
這個用來查ASCII字符串好像不錯哦,但是應該注意到,這個打印只有ASCII碼,沒有字節數顯示
db:字節值和ASCII字符每個顯示行都包含該行第一個字節的地址,后面跟16進制字節值。這些字節值后面會緊跟它們對應的ASCII值。第8和第9個16進制值之間會用連字號(-)分隔。所有不可打印字符,如回車和換行都被顯示為點號(.)。
默認的顯示個數為128字節。
這個就不寫例子了,第一個d給出的就是db的例子
dc:雙字值(4字節)和ASCII字符。每個顯示行都會顯示行中第一個數據的地址,並且每行最多顯示8個16進制值以及它們對應的ASCII字符。默認的顯示數量為32個DWORD(128字節)。
dd:雙字值(4字節) 默認的顯示數量為32個DWORD(128字節)。
這兩個比對着給個例子:
- 7c92120e ff8bc3cc ff8bc3cc 0424448b 0004c2cc .........D$.....
- 7c92121e 0018a164 57c30000 0c247c8b 0824548b d......W.|$..T$.
- 7c92122e 000002c7 7a890000 74ff0b04 ffc9831e .......z...t....
- 7c92123e aef2c033 f981d1f7 0000ffff ffb90576 3...........v...
- 7c92124e 660000ff 49024a89 5f0a8966 570008c2 ...f.J.If.._...W
- 7c92125e 0c247c8b 0824548b 000002c7 7a890000 .|$..T$........z
- 7c92126e 74ff0b04 ffc9831e aef2c033 f981d1f7 ...t....3.......
- 7c92127e 0000ffff ffb90576 660000ff 49024a89 ....v......f.J.I
- 0:001> dd eip
- 7c92120e ff8bc3cc ff8bc3cc 0424448b 0004c2cc
- 7c92121e 0018a164 57c30000 0c247c8b 0824548b
- 7c92122e 000002c7 7a890000 74ff0b04 ffc9831e
- 7c92123e aef2c033 f981d1f7 0000ffff ffb90576
- 7c92124e 660000ff 49024a89 5f0a8966 570008c2
- 7c92125e 0c247c8b 0824548b 000002c7 7a890000
- 7c92126e 74ff0b04 ffc9831e aef2c033 f981d1f7
- 7c92127e 0000ffff ffb90576 660000ff 49024a89
我們可以發現dd相對來說,少了右邊的Asii碼字符,所以推薦用dc,不過dd好記,和debug運用相同嘛.
dq:四字值(Quad-word values) (8 bytes)。默認顯示數量為16個四字 (128 字節)。
dw:WORD值(2字節)。 每個顯示行都會顯示行中第一個數據的地址,並且每行最多顯示8個16進制值。默認顯示數量為64個WORD(128字節)。
dW:WORD值(2字節)和ASCII字符。每個顯示行都會顯示行中第一個數據的地址,並且每行最多顯示8個16進制值。默認顯示數量為64個WORD(128字節)。
- 7c92120e ff8bc3cc ff8bc3cc 0424448b 0004c2cc
- 7c92121e 0018a164 57c30000 0c247c8b 0824548b
- 7c92122e 000002c7 7a890000 74ff0b04 ffc9831e
- 7c92123e aef2c033 f981d1f7 0000ffff ffb90576
- 7c92124e 660000ff 49024a89 5f0a8966 570008c2
- 7c92125e 0c247c8b 0824548b 000002c7 7a890000
- 7c92126e 74ff0b04 ffc9831e aef2c033 f981d1f7
- 7c92127e 0000ffff ffb90576 660000ff 49024a89
- 0:001> dw eip
- 7c92120e c3cc ff8b c3cc ff8b 448b 0424 c2cc 0004
- 7c92121e a164 0018 0000 57c3 7c8b 0c24 548b 0824
- 7c92122e 02c7 0000 0000 7a89 0b04 74ff 831e ffc9
- 7c92123e c033 aef2 d1f7 f981 ffff 0000 0576 ffb9
- 7c92124e 00ff 6600 4a89 4902 8966 5f0a 08c2 5700
- 7c92125e 7c8b 0c24 548b 0824 02c7 0000 0000 7a89
- 7c92126e 0b04 74ff 831e ffc9 c033 aef2 d1f7 f981
- 7c92127e ffff 0000 0576 ffb9 00ff 6600 4a89 4902
- 0:001> dW eip
- 7c92120e c3cc ff8b c3cc ff8b 448b 0424 c2cc 0004 .........D$.....
- 7c92121e a164 0018 0000 57c3 7c8b 0c24 548b 0824 d......W.|$..T$.
- 7c92122e 02c7 0000 0000 7a89 0b04 74ff 831e ffc9 .......z...t....
- 7c92123e c033 aef2 d1f7 f981 ffff 0000 0576 ffb9 3...........v...
- 7c92124e 00ff 6600 4a89 4902 8966 5f0a 08c2 5700 ...f.J.If.._...W
- 7c92125e 7c8b 0c24 548b 0824 02c7 0000 0000 7a89 .|$..T$........z
- 7c92126e 0b04 74ff 831e ffc9 c033 aef2 d1f7 f981 ...t....3.......
- 7c92127e ffff 0000 0576 ffb9 00ff 6600 4a89 4902 ....v......f.J.I</SPAN>
dD:雙精度浮點數(8字節) 默認的顯示數量是15個數字(120字節)。
df:單精度浮點數(4字節) 默認的顯示數量是16個數字(64字節)。
dp:指針大小的值。該命令根據目標機的處理器是32位還是64位的,分別等於dd 或dq。默認顯示數量為32個DWORD或者16個四字(quad-word) (128 字節)。
du:Unicode字符 。每行最多顯示48個字符。顯示一直繼續直到遇到第一個null字節或者到達range 值指定的所有字符都已經顯示。所有不可打印字符,如回車和換行都被顯示為點號(.)。
dyb:二進制值和字節的值。默認顯示數量為32字節。
dyd:二進制值和雙字值(4字節)。默認顯示數量為8個DWORD(32字節)。
0:001> dD eip
- 7c92120e -2.43714230651e+306 6.62088185061e-309 5.84873529654e+114
- 7c921226 1.92413942387e-269 1.81520618711e+282 -3.58305289924e+307
- 7c92123e -1.97432319055e+277 -1.75705767106e+307 5.09883096248e+043
- 7c921256 1.20502524006e+111 1.92413942387e-269 1.81520618711e+282
- 7c92126e -3.58305289924e+307 -1.97432319055e+277 -1.75705767106e+307
- 0:001> df eip
- 7c92120e -1.#QNAN -1.#QNAN 1.9309581e-036 4.3722194e-040
- 7c92121e 2.261948e-039 4.2880953e+014 1.2671579e-031 4.9451335e-034
- 7c92122e 9.9632321e-043 3.5567233e+035 1.6165272e+032 -1.#QNAN
- 7c92123e -1.1039027e-010 -8.4258111e+034 9.1834095e-041 -1.#QNAN
- 0:001> dp eip
- 7c92120e ff8bc3cc ff8bc3cc 0424448b 0004c2cc
- 7c92121e 0018a164 57c30000 0c247c8b 0824548b
- 7c92122e 000002c7 7a890000 74ff0b04 ffc9831e
- 7c92123e aef2c033 f981d1f7 0000ffff ffb90576
- 7c92124e 660000ff 49024a89 5f0a8966 570008c2
- 7c92125e 0c247c8b 0824548b 000002c7 7a890000
- 7c92126e 74ff0b04 ffc9831e aef2c033 f981d1f7
- 7c92127e 0000ffff ffb90576 660000ff 49024a89
- 0:001> du eip
- 7c92120e "쏌ヒ쏌ヒ䒋Ф싌.ꅤ."
- 0:001> dyb eip
- 76543210 76543210 76543210 76543210
- -------- -------- -------- --------
- 7c92120e 11001100 11000011 10001011 11111111 cc c3 8b ff
- 7c921212 11001100 11000011 10001011 11111111 cc c3 8b ff
- 7c921216 10001011 01000100 00100100 00000100 8b 44 24 04
- 7c92121a 11001100 11000010 00000100 00000000 cc c2 04 00
- 7c92121e 01100100 10100001 00011000 00000000 64 a1 18 00
- 7c921222 00000000 00000000 11000011 01010111 00 00 c3 57
- 7c921226 10001011 01111100 00100100 00001100 8b 7c 24 0c
- 7c92122a 10001011 01010100 00100100 00001000 8b 54 24 08
- 0:001> dyd eip
- 3 2 1 0
- 10987654 32109876 54321098 76543210
- -------- -------- -------- --------
- 7c92120e 11111111 10001011 11000011 11001100 ff8bc3cc
- 7c921212 11111111 10001011 11000011 11001100 ff8bc3cc
- 7c921216 00000100 00100100 01000100 10001011 0424448b
- 7c92121a 00000000 00000100 11000010 11001100 0004c2cc
- 7c92121e 00000000 00011000 10100001 01100100 0018a164
- 7c921222 01010111 11000011 00000000 00000000 57c30000
- 7c921226 00001100 00100100 01111100 10001011 0c247c8b
- 7c92122a 00001000 00100100 01010100 10001011 0824548b</STRONG></SPAN>
個人覺得最難記的就是,db-dd-dw,但是dW是dw的擴展,dD卻不是dd的擴充,而是雙精度顯示,dc才是dd的擴充,我靠,暈了。還是要在線查查文檔啊。
