4
我有一個用戶模式進程和內核模塊。現在我想從內核讀取usermode進程的某些區域,但有一個問題:不復制用戶模式內存和VA簡單訪問。 所以我們有:task_struct的目標進程,其他相關的結構(如mm_struct,vma_struct)和虛擬地址,如0x0070abcd,我想讀取或更確切地映射到我的內核模塊。從Linux上的內核直接訪問用戶內存
我可以使用get_user_pages獲取所需內存區域的頁面列表,但下一步是什麼?我應該將頁面以某種方式映射到內核中,然後嘗試將它們作爲連續內存區域讀取,還是有更好的解決方案?
不是一個答案,因爲我目前還不能確認細節,但我建議你在執行'access_process_vm'時看看'mm/memory.c'。 – Hasturkun
看起來像access_process_vm調用copy_from_user_page。我不想複製用戶空間頁面,除非它是唯一可用的解決方案。 – BSen
'copy_from_user_page'大部分時間似乎都是一個簡單的'memcpy()',一些拱門/平臺實現似乎首先處理D/I緩存。除非您知道您使用的是x86或類似軟件,否則我建議您小心謹慎。 – Hasturkun