如何将十六进制数传递给WinDBG命令?

时间:2014-06-30 21:38:13

标签: python windbg hex

我对十六进制和Windows调试器命令很新。我正在尝试编写一个python脚本,我在其中调用'.writemem函数,提供文件名,起始地址和要写入的字节数。这是我到目前为止所做的:

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

其中beginAddress是十六进制形式的起始地址的字符串,size也是十六进制字符串。单独的“L”表示我不想指定一系列地址,而是指定一个起点和一个大小。

我发现这个命令运行的几个例子都从两个字符串的开头都省略了'0x',我想知道我是否需要这样做。我有点害怕运行它看,因为writemem是一个危险的功能。有关如何格式化这个十六进制的任何想法吗?

2 个答案:

答案 0 :(得分: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

作为旁注:请注意the range limit并对大于512 kB的区域使用L?语法。

答案 1 :(得分:0)

请参阅hex功能。将int转换为十六进制。