2014-06-30 33 views
0

我很新的十六進制和Windows調試器命令。我試圖編寫一個python腳本,我在其中調用'.writemem函數,提供一個文件名,一個起始地址和一些字節來編寫。這是我到目前爲止有:如何將十六進制數字傳遞給WinDBG命令?

cmdstr = ".writemem " + filename + " " + startAddress + " L" + size 
dbgCommand(cmdstr) 

其中beginAddress是十六進制格式的起始地址的字符串,和大小也是一個十六進制字符串。唯一的'L'表示我不想指定一個地址範圍,而是指定一個開始和一個大小。

我發現這個命令正在運行的幾個例子都從兩個字符串的開頭都省略了'0x',我想知道是否需要這樣做。我有點害怕去運行它,因爲writemem是一個危險的函數。任何想法如何格式化這個十六進制?

+0

爲了澄清,我的變量已經在前面的'0x'的十六進制形式(作爲字符串),我想知道如果我需要刪除這個前綴之前,我將這些參數傳遞給dbgCommand。 – amanama93

回答

2

默認情況下WinDbg將數字視爲十六進制數,因此0x前綴是可選的。不過,我寧願更加明確,只是保留0x前綴。

你可以嘗試用?命令:

0:003> ? f 
Evaluate expression: 15 = 00000000`0000000f 
0:003> ? 0xf 
Evaluate expression: 15 = 00000000`0000000f 

如果你想使用十進制值,可以使用0n前綴:

0:003> ? 0n15 
Evaluate expression: 15 = 00000000`0000000f 

正如一個側面說明:請注意0​​並對大於512 kB的區域使用L?語法。

相關問題