1
因此,可以說我有機會獲得一個過程,它的mm_struct一個用戶進程更改頁面映射,是沒有辦法,我可以改變映射的一個或刪除的映射,並創建一個臨時的,這樣的方式我可以分配一個小於一頁的數量,並寫入內存?在Linux內核中
例如,在ADD指令上處理寫入錯誤。我可以相對容易地得到錯誤的地址和大小。我在本地分配8個字節(最大的單個指令大小)並且映射混亂,使得故障的虛擬地址指向這8個字節的第一個字節。然後單步執行指令以獲取用於其他頁面的數據,然後將原始頁面還原到映射。我只是好奇,是否可以在虛擬內存區域中使用除頁面以外的其他內容。
這是真的,因爲內存開銷並不是很大,因爲它只有4或8k的頁面大小,即使最多隻能使用前8個字節。作爲一個旁註,你會碰巧知道單步執行用戶空間指令(顯然是從內核空間)的最簡單方法嗎? –
@Jesus:我不知道確切的,但我會首先查看['ptrace()'](http://linux.die.net/man/2/ptrace)中使用的代碼來實現' PTRACE_SINGLESTEP'請求。 – Karmastan