windbg調試命令9(dt、d)

來源:互聯網
上載者:User

dt命令顯示局部變數、全域變數或資料類型的資訊。它也可以僅顯示資料類型。即結構和聯合(union)的資訊。

 0: kd> dt _PEB  

  1. nt!_PEB  
  2.    +0x000 InheritedAddressSpace : UChar  
  3.    +0x001 ReadImageFileExecOptions : UChar  
  4.    +0x002 BeingDebugged    : UChar  
  5.    +0x003 SpareBool        : UChar  
  6.    +0x004 Mutant           : Ptr32 Void  
  7.    +0x008 ImageBaseAddress : Ptr32 Void  
  8.    +0x00c Ldr              : Ptr32 _PEB_LDR_DATA  
  9.    +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS_PARAMETERS  
  10. [...]  

 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*命令,ddb 的效果相同。

注意d重複前一個以d開頭的命令。包括ddaddpddudpadppdpudqadqpdquddsdpsdqsdsdSdgdldtdv,以及本頁中的顯示命令。如果在d之後的參數不適當,可能會產生錯誤。

0:001> d  
  1. 7c92120e  cc c3 8b ff cc c3 8b ff-8b 44 24 04 cc c2 04 00  .........D$.....  
  2. 7c92121e  64 a1 18 00 00 00 c3 57-8b 7c 24 0c 8b 54 24 08  d......W.|$..T$.  
  3. 7c92122e  c7 02 00 00 00 00 89 7a-04 0b ff 74 1e 83 c9 ff  .......z...t....  
  4. 7c92123e  33 c0 f2 ae f7 d1 81 f9-ff ff 00 00 76 05 b9 ff  3...........v...  
  5. 7c92124e  ff 00 00 66 89 4a 02 49-66 89 0a 5f c2 08 00 57  ...f.J.If.._...W  
  6. 7c92125e  8b 7c 24 0c 8b 54 24 08-c7 02 00 00 00 00 89 7a  .|$..T$........z  
  7. 7c92126e  04 0b ff 74 1e 83 c9 ff-33 c0 f2 ae f7 d1 81 f9  ...t....3.......  
  8. 7c92127e  ff ff 00 00 76 05 b9 ff-ff 00 00 66 89 4a 02 49  ....v......f.J.I  
  9. 0:001> d  
  10. 7c92128e  66 89 0a 5f c2 08 00 57-8b 7c 24 0c 8b 54 24 08  f.._...W.|$..T$.  
  11. 7c92129e  c7 02 00 00 00 00 89 7a-04 0b ff 74 22 83 c9 ff  .......z...t"...  
  12. 7c9212ae  33 c0 66 f2 af f7 d1 d1-e1 81 f9 fe ff 00 00 76  3.f............v  
  13. 7c9212be  05 b9 fe ff 00 00 66 89-4a 02 49 49 66 89 0a 5f  ......f.J.IIf.._  
  14. 7c9212ce  c2 08 00 83 ec 0c dd 14-24 e8 bf cf 00 00 e8 0d  ........$.......  
  15. 7c9212de  00 00 00 83 c4 0c c3 8d-54 24 04 e8 6a cf 00 00  ........T$..j...  
  16. 7c9212ee  52 9b d9 3c 24 74 50 66-81 3c 24 7f 02 74 06 d9  R..<$tPf.<$..t..  
  17. 7c9212fe  2d 5c e7 92 7c d9 fe 9b-df e0 9e 7a 1d 83 3d ac  -\..|......z..=.  

我們可以看出第二個d顯示的地址是前面的地址的延續

da:ASCII 字元每行最多48個字元。顯示一直繼續直到遇到第一個null位元組或者到達range 值指定的所有字元都已經顯示。所有不可列印字元,如斷行符號和換行都被顯示為點號(.)。

0:001> r  
  1. eax=00000009 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005  
  2. eip=7c92120e esp=00c1ffcc ebp=00c1fff4 iopl=0         nv up ei pl zr na pe nc  
  3. cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00000246  
  4. ntdll!DbgBreakPoint:  
  5. 7c92120e cc              int     3  
  6. 0:001> da ebp  
  7. 00c1fff4  ""  
  8. 0:001> da  
  9. 00c1fff5  ""  
  10. </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位元組)。

這兩個比對著給個例子:

0:001> dc eip  
  1. 7c92120e  ff8bc3cc ff8bc3cc 0424448b 0004c2cc  .........D$.....  
  2. 7c92121e  0018a164 57c30000 0c247c8b 0824548b  d......W.|$..T$.  
  3. 7c92122e  000002c7 7a890000 74ff0b04 ffc9831e  .......z...t....  
  4. 7c92123e  aef2c033 f981d1f7 0000ffff ffb90576  3...........v...  
  5. 7c92124e  660000ff 49024a89 5f0a8966 570008c2  ...f.J.If.._...W  
  6. 7c92125e  0c247c8b 0824548b 000002c7 7a890000  .|$..T$........z  
  7. 7c92126e  74ff0b04 ffc9831e aef2c033 f981d1f7  ...t....3.......  
  8. 7c92127e  0000ffff ffb90576 660000ff 49024a89  ....v......f.J.I  
  9. 0:001> dd eip  
  10. 7c92120e  ff8bc3cc ff8bc3cc 0424448b 0004c2cc  
  11. 7c92121e  0018a164 57c30000 0c247c8b 0824548b  
  12. 7c92122e  000002c7 7a890000 74ff0b04 ffc9831e  
  13. 7c92123e  aef2c033 f981d1f7 0000ffff ffb90576  
  14. 7c92124e  660000ff 49024a89 5f0a8966 570008c2  
  15. 7c92125e  0c247c8b 0824548b 000002c7 7a890000  
  16. 7c92126e  74ff0b04 ffc9831e aef2c033 f981d1f7  
  17. 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位元組)。

0:001> dd eip  
  1. 7c92120e  ff8bc3cc ff8bc3cc 0424448b 0004c2cc  
  2. 7c92121e  0018a164 57c30000 0c247c8b 0824548b  
  3. 7c92122e  000002c7 7a890000 74ff0b04 ffc9831e  
  4. 7c92123e  aef2c033 f981d1f7 0000ffff ffb90576  
  5. 7c92124e  660000ff 49024a89 5f0a8966 570008c2  
  6. 7c92125e  0c247c8b 0824548b 000002c7 7a890000  
  7. 7c92126e  74ff0b04 ffc9831e aef2c033 f981d1f7  
  8. 7c92127e  0000ffff ffb90576 660000ff 49024a89  
  9. 0:001> dw eip  
  10. 7c92120e  c3cc ff8b c3cc ff8b 448b 0424 c2cc 0004  
  11. 7c92121e  a164 0018 0000 57c3 7c8b 0c24 548b 0824  
  12. 7c92122e  02c7 0000 0000 7a89 0b04 74ff 831e ffc9  
  13. 7c92123e  c033 aef2 d1f7 f981 ffff 0000 0576 ffb9  
  14. 7c92124e  00ff 6600 4a89 4902 8966 5f0a 08c2 5700  
  15. 7c92125e  7c8b 0c24 548b 0824 02c7 0000 0000 7a89  
  16. 7c92126e  0b04 74ff 831e ffc9 c033 aef2 d1f7 f981  
  17. 7c92127e  ffff 0000 0576 ffb9 00ff 6600 4a89 4902  
  18. 0:001> dW eip  
  19. 7c92120e  c3cc ff8b c3cc ff8b 448b 0424 c2cc 0004  .........D$.....  
  20. 7c92121e  a164 0018 0000 57c3 7c8b 0c24 548b 0824  d......W.|$..T$.  
  21. 7c92122e  02c7 0000 0000 7a89 0b04 74ff 831e ffc9  .......z...t....  
  22. 7c92123e  c033 aef2 d1f7 f981 ffff 0000 0576 ffb9  3...........v...  
  23. 7c92124e  00ff 6600 4a89 4902 8966 5f0a 08c2 5700  ...f.J.If.._...W  
  24. 7c92125e  7c8b 0c24 548b 0824 02c7 0000 0000 7a89  .|$..T$........z  
  25. 7c92126e  0b04 74ff 831e ffc9 c033 aef2 d1f7 f981  ...t....3.......  
  26. 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位的,分別等於dddq。預設顯示數量為32個DWORD或者16個四字(quad-word) (128 位元組)。

du:Unicode字元 。每行最多顯示48個字元。顯示一直繼續直到遇到第一個null位元組或者到達range 值指定的所有字元都已經顯示。所有不可列印字元,如斷行符號和換行都被顯示為點號(.)。

dyb:二進位值和位元組的值。預設顯示數量為32位元組。

dyd:二進位值和雙字值(4位元組)。預設顯示數量為8個DWORD(32位元組)。

0:001> dD eip  

  1. 7c92120e     -2.43714230651e+306     6.62088185061e-309     5.84873529654e+114  
  2. 7c921226      1.92413942387e-269     1.81520618711e+282    -3.58305289924e+307  
  3. 7c92123e     -1.97432319055e+277    -1.75705767106e+307     5.09883096248e+043  
  4. 7c921256      1.20502524006e+111     1.92413942387e-269     1.81520618711e+282  
  5. 7c92126e     -3.58305289924e+307    -1.97432319055e+277    -1.75705767106e+307  
  6. 0:001> df eip  
  7. 7c92120e          -1.#QNAN         -1.#QNAN   1.9309581e-036   4.3722194e-040  
  8. 7c92121e     2.261948e-039   4.2880953e+014   1.2671579e-031   4.9451335e-034  
  9. 7c92122e    9.9632321e-043   3.5567233e+035   1.6165272e+032         -1.#QNAN  
  10. 7c92123e   -1.1039027e-010  -8.4258111e+034   9.1834095e-041         -1.#QNAN  
  11. 0:001> dp eip  
  12. 7c92120e  ff8bc3cc ff8bc3cc 0424448b 0004c2cc  
  13. 7c92121e  0018a164 57c30000 0c247c8b 0824548b  
  14. 7c92122e  000002c7 7a890000 74ff0b04 ffc9831e  
  15. 7c92123e  aef2c033 f981d1f7 0000ffff ffb90576  
  16. 7c92124e  660000ff 49024a89 5f0a8966 570008c2  
  17. 7c92125e  0c247c8b 0824548b 000002c7 7a890000  
  18. 7c92126e  74ff0b04 ffc9831e aef2c033 f981d1f7  
  19. 7c92127e  0000ffff ffb90576 660000ff 49024a89  
  20. 0:001> du eip  
  21. 7c92120e  "쏌ヒ쏌ヒ䒋Ф싌.ꅤ."  
  22. 0:001> dyb eip  
  23.           76543210 76543210 76543210 76543210  
  24.           -------- -------- -------- --------  
  25. 7c92120e  11001100 11000011 10001011 11111111  cc c3 8b ff  
  26. 7c921212  11001100 11000011 10001011 11111111  cc c3 8b ff  
  27. 7c921216  10001011 01000100 00100100 00000100  8b 44 24 04  
  28. 7c92121a  11001100 11000010 00000100 00000000  cc c2 04 00  
  29. 7c92121e  01100100 10100001 00011000 00000000  64 a1 18 00  
  30. 7c921222  00000000 00000000 11000011 01010111  00 00 c3 57  
  31. 7c921226  10001011 01111100 00100100 00001100  8b 7c 24 0c  
  32. 7c92122a  10001011 01010100 00100100 00001000  8b 54 24 08  
  33. 0:001> dyd eip  
  34.            3          2          1          0  
  35.           10987654 32109876 54321098 76543210  
  36.           -------- -------- -------- --------  
  37. 7c92120e  11111111 10001011 11000011 11001100  ff8bc3cc  
  38. 7c921212  11111111 10001011 11000011 11001100  ff8bc3cc  
  39. 7c921216  00000100 00100100 01000100 10001011  0424448b  
  40. 7c92121a  00000000 00000100 11000010 11001100  0004c2cc  
  41. 7c92121e  00000000 00011000 10100001 01100100  0018a164  
  42. 7c921222  01010111 11000011 00000000 00000000  57c30000  
  43. 7c921226  00001100 00100100 01111100 10001011  0c247c8b  
  44. 7c92122a  00001000 00100100 01010100 10001011  0824548b</STRONG></SPAN>  

個人覺得最難記的就是,db-dd-dw,但是dW是dw的擴充,dD卻不是dd的擴充,而是雙精確度顯示,dc才是dd的擴充,我靠,暈了。還是要線上查查文檔啊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.