我对十六进制和Windows调试器命令很新。我正在尝试编写一个python脚本,我在其中调用'.writemem函数,提供文件名,起始地址和要写入的字节数。这是我到目前为止所做的:
cmdstr = ".writemem " + filename + " " + startAddress + " L" + size
dbgCommand(cmdstr)
其中beginAddress是十六进制形式的起始地址的字符串,size也是十六进制字符串。单独的“L”表示我不想指定一系列地址,而是指定一个起点和一个大小。
我发现这个命令运行的几个例子都从两个字符串的开头都省略了'0x',我想知道我是否需要这样做。我有点害怕运行它看,因为writemem是一个危险的功能。有关如何格式化这个十六进制的任何想法吗?
答案 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转换为十六进制。