可以说内存地址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. 如何在Windows的内存地址中设置存储陷阱?
- 4. Java:如何在C++中存储和检索内存地址
- 5. 更改内存地址的速度
- 6. 更改内存地址而不是结构中的值C
- 7. 将数据存储在地址中并更改C中变量的地址?
- 8. 本地存储不会更改值
- 9. 如何查看本地存储更改
- 10. 如何修改存储在独立存储器内的xml文件中的值?
- 11. 如何保存存储在指针中的实际地址
- 12. 内存地址
- 13. 如何保存对本地存储所做的任何更改?
- 14. Mongoid:IPv6地址存储
- 15. 如何在回购中存储更改
- 16. 更新本地存储值
- 17. 如何在DBML中存储更改(存储过程)
- 18. 问题获取和存储阵列中的内存地址
- 19. 异或存储在EAX中的地址
- 20. 在内存中存储大型地图
- 21. 为什么存储在寄存器中的数据有内存地址?
- 22. 将多个值存储在相同的内存地址。分隔符?
- 23. 如何将标签值存储在本地存储中以及如何从本地存储中获取?
- 24. 机器内存地址的内存地址? (C语言)
- 25. sqlite的IP地址存储
- 26. 找出内存地址指向的值
- 27. C++内存地址?
- 28. 如何存储和搜索IP地址
- 29. 使用ddd更改内存地址内容
- 30. 在C#中的整数内存地址#
您可能需要处理内存保护。如果这是代码或只读数据,那么您将无法写入该地址。 – 2012-04-28 13:54:05
你是说虚拟内存地址还是物理内存地址? – 2012-04-28 14:05:42