假设内存地址0A7F03E4
存储值124
。如何使用python将其更改为300
?是否有为此类任务提供的模块?
答案 0 :(得分:8)
>>> import ctypes
>>> memfield = (ctypes.c_char).from_address(0x0A7F03E4)
现在你可以阅读memfield,分配给它,做任何你想做的事情。当然,只要您有权访问该内存位置。
你也可以通过
获得memarray>>> memarray = (ctypes.c_char*memoryfieldlen).from_address(0x0A7F03E4)
为您提供了一个memfield列表。
更新:我刚刚读到你要检索一个整数。在这种情况下,当然要使用ctypes.c_int。一般来说:使用适当的ctype;)
答案 1 :(得分:1)
您是否尝试过内置的ctypes模块? 它提供了一个memset功能,可以为您提供所需的功能。
答案 2 :(得分:1)
在UNIX上,您可以尝试open()
/dev/mem
设备访问物理内存,然后使用seek()
方法设置文件指针file
到正确的位置。然后使用write()
方法更改值。不要忘记将数字编码为原始字符串!
通常,只有root
用户才能访问此设备。