r:
registers的簡寫,可以顯示或修改寄存器的值、浮點寄存器的值、定義別名變量。
可以顯示當前線程下的寄存器值。
The r command displays or modifies registers, floating-point registers, flags, pseudo-registers, and fixed-name aliases.
0:000> ~2 r
//顯示 2號線程的寄存器值
0:000> ~* r eax
//顯示所有線程的 eax寄存器值
n (Set Number Base)
設置默認顯示的數字進制(Radix)
0:000> n
base is 16
//顯示默認進制
0:000> n 10
base is 10
//改成10進制
Value | Description |
8 | Octal |
10 | Decimal |
16 | Hexadecimal |
In all MASM expressions, numeric values are interpreted as numbers in the current radix (16, 10, or 8). You can override the default radix by specifying the 0x prefix (hexadecimal), the 0n prefix (decimal), the 0t prefix (octal), or the 0y prefix (binary).
dc 00cc07c8 00cc07c8+0n4344
Windbg默認的數值進制一般是16, 可以通過n命令查看和設置當前進制,
, 0n(十進制), 0x(十六進制), 0t(8進制), 0y(2進制), 比如0n20表示20, 0x14表示20等
? Expression(Evaluate Expression)
計算表達式
0:000> as fn c:\dir\name.txt //定義一個別名,設置別名,Alias Set
0:000> $spat("c:\dir\name.txt","*name*") //沒有輸出
0:000> ?$spat("c:\dir\name.txt","*name*") //計算結果,\n被轉義,所以結果是0.
Evaluate expression: 0 = 00000000`00000000
0:000> ?$spat(@"c:\dir\name.txt","*name*") //在字符串前面加 @符號
Evaluate expression: 1 = 00000000`00000001
0:000> ?$spat("c:\dir\","*name*")
Syntax error at '("c:\dir\","*name*")' //有錯誤,因爲dir\” 這裏被轉義
0:000> ?$spat(@"c:\dir\","*name*") //使用@,防止被轉義
Evaluate expression: 0 = 00000000`00000000
0:000> ?$spat(@"c:\\name","*name")
Evaluate expression: 1 = 00000000`00000001 //找到結果,輸出1,表示true
0:000> ?$spat(@"c:\dir\","*d*")
Evaluate expression: 1 = 00000000`00000001
0:000> ?$spat(${fn},"*d*")
Syntax error at '(c:\dir\name.txt,"*d*")' //定義別名就是類似C++ 裏的宏
0:000> ?$spat("${fn}","*d*")
Evaluate expression: 1 = 00000000`00000001
0:000> ?$spat("${fn}","*name*")
Evaluate expression: 0 = 00000000`00000000 // fn 中的\n 被轉義,所以找不到
0:000> ?$spat(@"${fn}","*name*")
Evaluate expression: 1 = 00000000`00000001
$spat 是MASM裏的一個命令,檢查第一個string參數是否符合第二個參數的模式(大小寫敏感),
要注意 轉移字符 \n, \", \r, and \b
?? 是c++表達式格式的,對應MASM的 ? 功能。
Address and Address Range Syntax
下面的2個是等價的,dd是讀取雙字,即4個字節,2個字節(byte)爲一個字(word)。
當一個存放於0x00123456 的指針指向地址0x00420000,我們想顯示位於地址0x00420000的內容時,可以有如下選擇:
0:000> dd 420000 //直接打印位於該地址的值
0:000> dd poi(123456)
//取得0x00123456地址上指針的值,以poi函數(point to int)取值,即32位平臺取4字節,64位平臺取8字節,取的都是一個完整指針大小的長度,32位平臺指針長度爲4字節,64位平臺指針長度是8字節。額外一點,int/Int32無論在32還是64位平臺都是4字節。
讀取開始地址爲0x00001000 的8字節:這裏假設對象長度是1字節,L指定是對象個數,它跟對象的大小有關係
Dd 0x00001000 0x00001007 //指定開始地址,結束地址
Dd 0x00001000 L8 //指定開始地址,對象個數8,假設對象是1字節長度
Dd 0x00001000 L2 //指定開始地址,對象個數2,假設對象是雙字長度(4字節)
Dd 80000000 L20 // the range from 0x80000000 through 0x8000001F
Dd 80000000 L-20 //specifies the range from 0x7FFFFFE0 through 0x7FFFFFFF.
MASM parser treats all symbols as addresses, the example must have the poi operator to dereference MyVar
MASM解析器把所有的symbol符號都用地址的方式來表示,所以必須用poi函數來解析出地址裏面的值。
實例:
0:000> !do 0x0000000122a8b110 Name: InternalEntity.CityInfoEntity MethodTable: 000007ff00283908 EEClass: 000007ff00293c18 Size: 48(0x30) bytes File: C:\ SearchService.InternalEntity.dll Fields: | ||||||||||||||||
MT | Field | Offset | Type | VT | Attr | Value | Name | |||||||||
000007fee4abc7e8 | 4000534 | 10 | System.Int32 | 1 | instance | 30138 | city | |||||||||
000007fee4abc7e8 | 4000535 | 14 | System.Int32 | 1 | instance | 10082 | province | |||||||||
000007fee4abc7e8 | 4000536 | 18 | Sstem.Int32 | 1 | instance | 28 | country | |||||||||
000007fee4abd618 | 4000537 | 20 | System.Boolean | 1 | instance | 1 | hasMemoryCacheConfig | |||||||||
000007ff00463810 | 4000538 | 8 | ...ityTimeZoneEntity | 0 | instance | 0000000122a8b140 | <CityTimeZone>k__BackingField | |||||||||
000007fee4abc7e8 | 4000539 | 1c | System.Int32 | 1 | instance | 0 | <CityhotelCount>k__BackingField | |||||||||
0:000> dc 0x0000000122a8b110 00000001`22a8b110 00283908 000007ff 22a8b140 00000001 .9(.....@..".... 00000001`22a8b120 000075ba 00002762 0000001c 00000000 .u..b'.......... 00000001`22a8b130 00000001 00000000 00000000 00000000 ................ 00000001`22a8b140 00463810 000007ff 000075ba 00000e10 .8F......u...... 00000001`22a8b150 00000e10 00000001 d266c000 08cffbb9 ..........f..... 00000001`22a8b160 9d264000 08d0a0be 20c3c000 08d119c2 .@&........ .... 00000001`22a8b170 eb834000 08d1bec6 00000000 00000000 .@.............. 00000001`22a8b180 00256438 000007ff 22a8b110 00000001 8d%........".... |
0 收藏 |
Ctrl+Enter 發佈
發佈
取消