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

Python 如何将十六进制数传递到WinDBG命令?,python,windbg,hex,Python,Windbg,Hex,我对十六进制和Windows调试器命令相当陌生。我正在尝试编写一个python脚本,在其中调用“.writemem”函数,提供文件名、起始地址和要写入的字节数。以下是我目前掌握的情况: cmdstr = ".writemem " + filename + " " + startAddress + " L" + size dbgCommand(cmdstr) 其中beginAddress是十六进制形式的起始地址字符串,size也是十六进制字符串。单独的“L”表示我不想指定地址范围,而是指定起始地

我对十六进制和Windows调试器命令相当陌生。我正在尝试编写一个python脚本,在其中调用“.writemem”函数,提供文件名、起始地址和要写入的字节数。以下是我目前掌握的情况:

cmdstr = ".writemem " + filename + " " + startAddress + " L" + size
dbgCommand(cmdstr)
其中beginAddress是十六进制形式的起始地址字符串,size也是十六进制字符串。单独的“L”表示我不想指定地址范围,而是指定起始地址和大小


我发现运行此命令的几个示例都从两个字符串的开头省略了“0x”,我想知道是否需要这样做。我有点害怕运行它,因为writemem是一个危险的函数。您知道如何格式化这个十六进制吗?

请参阅函数。将int转换为十六进制

默认情况下,WinDbg将数字视为十六进制,因此
0x
前缀是可选的。但是,我希望更明确一些,只保留
0x
前缀

您可以使用
命令来尝试:

0:003>?F
求值表达式:15=00000000`0000000 F
0:003> ? 0xf
求值表达式:15=00000000`0000000 F
如果要使用十进制值,可以使用
0n
前缀:

0:003>?0n15
求值表达式:15=00000000`0000000 F

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

为了澄清,我的变量已经是十六进制形式(作为字符串)了,前面的“0x”,我想知道在将这些参数传递给dbgCommand之前是否需要删除此前缀。