如何更改存储在内存地址中的值?

时间:2012-04-28 13:41:30

标签: python memory

假设内存地址0A7F03E4存储值124。如何使用python将其更改为300?是否有为此类任务提供的模块?

3 个答案:

答案 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用户才能访问此设备。