2014-06-30 32 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?语法。

相关问题