可以说内存地址0A7F03E4
存储值124
。如何使用python将其更改为300
?有没有提供这种任务的模块?如何更改存储在内存地址中的值?
回答
>>> import ctypes
>>> memfield = (ctypes.c_char).from_address(0x0A7F03E4)
现在你可以阅读memfield,分配给它,做任何你想要的。当然,只要您有权访问该内存位置。
,你还可以得到一个memarray与
>>> memarray = (ctypes.c_char*memoryfieldlen).from_address(0x0A7F03E4)
,让你memfields的列表。
更新:我刚才读到你想检索一个整数。在这种情况下,当然使用ctypes.c_int。一般来说:使用适当的CTYPE;)
这不会给你的Python进程的虚拟内存地址,而不是物理地址?后者可能无法使用,具体取决于操作系统和进程权限。 – 2012-04-28 14:01:37
当你想要访问非数据字段或可访问内存外的字段时,当然会得到段错误。 – ch3ka 2012-04-28 14:06:02
你有没有试过内置ctypes模块?它提供了一个memset函数,它应该给你你需要的东西。
在UNIX上,你可以尝试open()
的/dev/mem
设备访问物理内存,然后使用file
对象的seek()
方法设置文件指针到正确的位置。然后使用write()
方法更改该值。不要忘记将数字编码为原始字符串!
但是,通常只有root
用户才能访问此设备。
- 1. 如何更改存储在x86地址中的值?
- 2. 更改存储在变量中的内存地址C
- 3. 如何更改char *的内存地址?
- 4. 更改内存地址*
- 5. 如何在地址行上存储值?
- 6. 如何在Windows的内存地址中设置存储陷阱?
- 7. 在C中,如何更改指针指向的内存地址?
- 8. 存储指针地址在malloced内存
- 9. Java:如何在C++中存储和检索内存地址
- 10. 更改内存地址的速度
- 11. 选择地址以更改内存中的值
- 12. 更改内存地址而不是结构中的值C
- 13. 将数据存储在地址中并更改C中变量的地址?
- 14. 如何从内存地址获取值?
- 15. 存储在堆内存中的成员数据的地址
- 16. OpenCL如何更改cl_mem的内存地址?
- 17. CUDA:存储在全局内存中的地址
- 18. 如何查看本地存储更改
- 19. 本地存储不会更改值
- 20. 如何修改存储在独立存储器内的xml文件中的值?
- 21. 如何保存存储在指针中的实际地址
- 22. 如何更新本地存储值?
- 23. 内存地址
- 24. 如何保存对本地存储所做的任何更改?
- 25. 如何更改逆序NSMutableArray存储值?
- 26. 如何在内存存储更改后刷新dojo gridx?
- 27. Mongoid:IPv6地址存储
- 28. 如何在回购中存储更改
- 29. 如何在DBML中存储更改(存储过程)
- 30. 如何在任意内存写地址
您可能需要处理内存保护。如果这是代码或只读数据,那么您将无法写入该地址。 – 2012-04-28 13:54:05
你是说虚拟内存地址还是物理内存地址? – 2012-04-28 14:05:42