Direct memory access
Travis Oliphant
oliphant.travis at ieee.org
Wed Mar 7 15:25:35 EST 2007
Collin Stocks wrote:
> Does anyone know how to directly handle memory using python?
> I want to be able, for example, to copy the actual contents of a memory
> address, or set the actual contents of a memory address.
This kind of thing is generally not what Python is used for, so it's not
really easy to do.
Writing to arbitrary memory areas is an easy way to cause segmentation
violations which Python and its extensions try to make segmentation
violations (memory violations) as near impossible as they can.
If you really need to do this then you can use ctypes to do it.
Let N be the number of bytes you want to access, then
import ctypes
g = (ctypes.c_char*N).from_address(addr)
g is now a settable sequence of bytes that you can read and write to
using strings.
g[0] # read the first byte
g[1] # read the second byte
g[0] = '\x24' # set the first byte to hexadecimal 24
etc...
If you don't have permission to write to addr then you will get memory
violations and your program will crash if you try to read from or write
to the resulting sequence.
-Travis
More information about the Python-list
mailing list