假设内存地址0A7F03E4
存储一个值124
。如何将其更改为300
使用python?是否为此类任务提供了模块?
问问题
8822 次
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 回答