1
我正试图学习如何在Python中调用PROCESS_VM_READV。从the manual阅读,我决定创建一个类似于他们的例子。如何在Python中调用linux系统调用PROCESS_VM_READV?
我已经打开python3在终端与root权限。然后,通过导入&初始化需要的模块和变量
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)]
然后创建变量的本地和远程
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
的PIDvm(2242,local,2,remote,1,0)
但它返回-1,本地或远程的iov_base没有变化。我觉得我在这里犯了一个非常简单的错误,但不能完全放下手脚。
任何帮助表示赞赏,祝你有美好的一天。