1. 程式人生 > >60.windbg----as、$u0(固定別名、自定義別名)

60.windbg----as、$u0(固定別名、自定義別名)

轉自:花熊

固定別名($u0~$u9)
有10個固定別名。他們是$u0, $u1, ..., $u9。他們的等價字串可以是不包含ENTER鍵的任意字串。

使用r (Registers)命令為固定別明指定等價字串。定義固定別名時,必須在字母"u"之前插入點號(.)。等號(=)之後的文字是等價字串。等價字串可以包含空格或分號,但是頭部和尾部的空格被忽略掉。不能用引號將等價字串括起來(除非希望替代結果中包含引號)。

注意 r (Registers)命令設定固定別名容易混淆。這些別名不是暫存器或偽暫存器,即使使用了r命令來設定了他們的等價字串。這些別名前不需要新增at符號(@),也不能使用r命令來顯示這些別明的值。

預設情況下,如果沒有定義固定別名,他們是空字串。

0:000> r $.u0 = test1!wmain
0:000> .echo $u0
test1!wmain
0:000> u $u0 L2
test1!wmain [d:\windbg\test1\test1.cpp @ 16]:
01071a40 55              push    ebp
01071a41 8bec            mov     ebp,esp

 

注意是$.u0

 自定義別名

as 和aS 命令定義一個新的別名或重新定義已存在的別名

語法:

as Name EquivalentLine 
aS Name EquivalentPhrase 
aS Name "EquivalentPhrase" 
as /e Name EnvironmentVariable 
as /ma Name Address 
as /mu Name Address 
as /msa Name Address 
as /msu Name Address 
as /x Name Expression 
aS /f Name File 
as /c Name CommandString 
 

/e 設定別名的值為EnvironmentVariable 指定的環境變數。

0:000> as /e path_evn path
0:000> al
  Alias            Value  
 -------          ------- 
 path_evn         C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Common Files\Adobe\AGL;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\CMake\bin;C:\Program Files\doxygen\bin;C:\Python33;C:\GnuWin32\bin;C:\Qt\4.7.1;C:\Program Files\VanDyke Software\Clients\;D:\mysql\bin;C:\Program Files (x86)\SciTools/bin/pc-win32;C:\Program Files (x86)\Debugging Tools for Windows (x86) 

把環境變數path賦給了path_evn

/ma 將別名的等價值設定為從地址Address 開始的null結尾的ASCII字串。 /mu 將別名的等價值設定為從地址Address 開始的null結尾的Unicode字串。 /msa 將別名的等價值設定為從地址Address 開始的null結尾的ANSI_STRING結構。 /msu 將別名的等價值設定為從地址Address 開始的null結尾的UNICODE_STRING結構。 Address 指定用來決定別名的等價值的虛擬記憶體位置。 
/f 設定別名的等價值為File 檔案的內容。/f 開關只能和aS一起使用,不能和as一起。File 指定內容作為別名等價值的檔案。File可以包含空格,但是不能將 File用引號括起來。如果指定了非法的檔案,會得到一個"Out of memory"的錯誤資訊。 
如果使用者別名是和命令的其他部分是連續的,就必須使用${使用者別名}將使用者別名包圍起來,或者使用空格把別名和其他部分分隔開來:
 

0:000> as ENTRY $exentry
0:000> al
  Alias            Value  
 -------          ------- 
 ENTRY            $exentry 
0:000> dd ENTRY L2
00e2af95  358f36e9 63e1e900
0:000> dd ENTRY+2 L2
Couldn't resolve error at 'ENTRY+2 '
0:000> dd ENTRY +2 L2
00e2af97  e900358f 002c63e1
0:000> dd ${ENTRY}+2 L2
00e2af97  e900358f 002c63e1

但因為固定別名的長度是確定的,所以可以直接用$u0,而不需要大括號

0:000> r $.u0=$exentry
0:000> dd $u0+2
00e2af97  e900358f 002c63e1

使用al可以列出所有使用者命令別名,使用ad可刪除指定或全部(ad*)使用者別名

0:000> al
  Alias            Value  
 -------          ------- 
 ENTRY            $exentry 
windbg> .hh ad
0:000> ad ENTRY            
0:000> al
No aliases

我們先找個字串:

0:006> da 0136004d  
0136004d  "!This program cannot be run in D"
0136006d  "OS mode....$"
/ma 
將別名的等價值設定為從地址Address 開始的null結尾的ASCII字串。 
0:006> as /ma asciistring 0136004d  
0:006> al
  Alias            Value  
 -------          ------- 
 asciistring      !This program cannot be run in DOS mode.
$ 

/f 設定別名的等價值為File 檔案的內容。/f 開關只能和aS一起使用,不能和as一起。如c盤下有1.txt,內容為

http://dump.gamesafe.qq.com/cgi-bin/susup/infocheck?FileHash=aee771cb&FileSize=18602&SusBaseAddr=0&FileName=2013-09-18-11-04-03.dmp&PgmName=test.exe&ClientPath=E:\專案SVN\ied_sec_client_proj\trunk\Tools\BugTraceEx\output\vc6\2013-09-18-11-04-03.dmp&ClientVersion=0&Uin=0&Qt=0&game_id=3&mac=8c89a5f50b24&guid=5d022ec05c6b100aec7dab5c26509d79&crashmodule_name=test.exe&crashmodule_version=0&crashexe_name=test.exe&crashexe_version=0&ime_count=1&ime_name_1=SOGOUWB.IME&ime_version_1=2.0.1.1198&safesoftware_count=1&safesoftware_name_1=QQPCTray.exe&safesoftware_version_1=8.4.10062.224&zone_id=265&os_main_version=6&os_minor_version=1                         
0:006> aS /f 1file c:\1.txt
0:006> al
  Alias            Value  
 -------          ------- 
 1file            http://dump.gamesafe.qq.com/cgi-bin/susup/infocheck?FileHash=aee771cb&FileSize=18602&SusBaseAddr=0&FileName=2013-09-18-11-04-03.dmp&PgmName=test.exe&ClientPath=E:\專案SVN\ied_sec_client_proj\trunk\Tools\BugTraceEx\output\vc6\2013-09-18-11-04-03.dmp&ClientVersion=0&Uin=0&Qt=0&game_id=3&mac=8c89a5f50b24&guid=5d022ec05c6b100aec7dab5c26509d79&crashmodule_name=test.exe&crashmodule_version=0&crashexe_name=test.exe&crashexe_version=0&ime_count=1&ime_name_1=SOGOUWB.IME&ime_version_1=2.0.1.1198&safesoftware_count=1&safesoftware_name_1=QQPCTray.exe&safesoftware_version_1=8.4.10062.224&zone_id=265&os_main_version=6&os_minor_version=1