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

2024-05-14 20:49:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 模块内存地址
3条回答
>>> import ctypes
>>> memfield = (ctypes.c_char).from_address(0x0A7F03E4)

现在你可以阅读memfield,分配给它,做任何你想做的事情。当然,只要你能访问那个内存位置。

你也可以用

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

这给了你一个模场列表。

更新:我刚读到你想检索一个整数。在这种情况下,当然要使用ctypes.c\u int。通常:使用适当的ctype;)

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

不过,通常只有root用户可以访问此设备。

你试过内置的ctypes模块吗? 它提供了一个memset函数,可以满足您的需要。

相关问题 更多 >

    热门问题