Windbg 腳本命令簡介

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

收藏

飄雪超人

364篇文章,21W+人氣,0粉絲

Ctrl+Enter 發佈

發佈

取消

掃一掃,領取大禮包

0

分享
飄雪超人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章