我正在尝试学习如何在Python中调用PROCESS_VM_READV。阅读手册后,我决定创建类似于他们示例的东西。
我已经使用root访问权限在终端中打开了Python3。然后导入和初始化所需的模块和变量。
在这个例子中,有一个叫做 iovec 的结构体。所以,我需要在Python中重新创建它。
然后创建变量local和remote。
但是它返回-1,并且本地或远程的iov_base没有任何更改。我觉得我在这里犯了一个非常简单的错误,但无法确切地指出它。
我已经使用root访问权限在终端中打开了Python3。然后导入和初始化所需的模块和变量。
import ctypes
libc = ctypes.CDLL('libc.so.6')
vm=libc.process_vm_readv
在这个例子中,有一个叫做 iovec 的结构体。所以,我需要在Python中重新创建它。
class iovec(ctypes.Structure):
_fields_=[("iov_base",ctypes.c_void_p),("iov_len",ctypes.c_int)]
然后创建变量local和remote。
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
最后,使用 KMines 的进程 ID 调用 PROCESS_VM_READV。
vm(2242,local,2,remote,1,0)
但是它返回-1,并且本地或远程的iov_base没有任何更改。我觉得我在这里犯了一个非常简单的错误,但无法确切地指出它。
非常感谢您的帮助,祝您拥有愉快的一天。