I used to mirror a cpp application struct exactly, in order to 'hack' in some memory and read/access their normally unaccessible values (due to poor API support for some area of their app). I used to do this kind of technique: import ctypes class AppStructFoo(ctypes.Structure): _fields_ = [ ("next", ctypes.c_void_p), ("prev", ctypes.c_void_p), ("name", ctypes.c_char * 64), ("identifier", ctypes.c_int32), ("flag", ctypes.c_int), ("idname", ctypes.c_char * 64), ("typeinfo", ctypes.c_void_p), ("type_legacy", ctypes.c_int16), ("ui_order", ctypes.c_int16), ("custom1", ctypes.c_int16), ("custom2", ctypes.c_int16), #Goal was to read this int let say.. #ect.. ] node_struct = AppStructFoo.from_address(memory_adress) print(node_struct.custom2) >>> 12 #YES! it was working perfectly!! But, now the application struct that i'm mirroring recently changed it's char name[64]; and char idname[64]; property to a std::string name; type of character chain. Therefore i wonder if there's a pythonic/ctypes solution to match a std::string memory layout? or perhaps if there is a way to skip it? The string is not boudn to 64 char anymore.. the limit is now unknown. This std::string element is similar to an unknown obstacle that i cannot seem to bypass in order to reach my objective Any idea? Continue reading...