Я пытаюсь узнать, как вызвать PROCESS_VM_READV внутри python. Чтение с the manual, я решил создать нечто похожее на их пример.Как вызвать linux syscall PROCESS_VM_READV внутри python?
Я открыл python3 в терминале с доступом root. Затем протекали путем импорта & INITIALIZING нужны модулей и переменных
import ctypes
libc = ctypes.CDLL('libc.so.6')
vm=libc.process_vm_readv
В примере, есть структура называется iovec. Таким образом, мне нужно заново создать его в питон
class iovec(ctypes.Structure):
_fields_=[("iov_base",ctypes.c_void_p),("iov_len",ctypes.c_int)]
Затем создайте переменные локального и удаленного
p1=ctypes.c_char_p(b"")
p1=ctypes.cast(p1,ctypes.c_void_p)
local=iovec(p1,10)
remote=iovec(0x00400000,20) # Address of ELF header
Наконец, вызывая PROCESS_VM_READV с ВЗОМТ из KMines
vm(2242,local,2,remote,1,0)
Но она возвращает -1 и никаких изменений в iov_base локального или удаленного. Я чувствую, что здесь делаю очень простую ошибку, но не могу на нее положиться.
Любая помощь приветствуется, имейте приятный день.