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沒有變化。我覺得我在這裏犯了一個非常簡單的錯誤,但不能完全放下手腳。
任何幫助表示讚賞,祝你有美好的一天。