8

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

4

3 回答 3

10
>>> import ctypes
>>> memfield = (ctypes.c_char).from_address(0x0A7F03E4)

现在你可以读取 memfield,分配给它,做任何你想做的事。当然,只要您可以访问该内存位置。

你也可以得到一个内存阵列

>>> memarray = (ctypes.c_char*memoryfieldlen).from_address(0x0A7F03E4)

它为您提供了一个 memfields 列表。

更新:我刚刚读到你想检索一个整数。在这种情况下,当然使用 ctypes.c_int。一般来说:使用适当的 ctype ;)

于 2012-04-28T13:56:31.820 回答
2

您是否尝试过内置的 ctypes 模块?它提供了一个 memset 功能,应该可以满足您的需求。

于 2012-04-28T13:53:12.443 回答
1

在 UNIX 上,您可以尝试对open()设备/dev/mem的物理内存进行访问,然后使用对象的seek()方法file将文件指针设置到正确的位置。然后使用该write()方法更改值。不要忘记将数字编码为原始字符串!

但是,通常只有root用户才能访问此设备。

于 2012-04-28T13:56:46.727 回答