我有幾個關於linux內核內存頁面寫保護的問題。Linux內核代碼空間寫保護
我怎麼能計算出,如果內核 代碼(文本段)是寫 保護與否。我可以看看
/proc/<process-id>/map
以查看各種進程的內存映射。 但不知道在哪裏尋找 內核代碼的內存映射。如果內核代碼段是寫 保護,那麼是否有可能 代碼段的網頁是 任何其他內核 級代碼覆蓋。換句話說, 是否在文本段頁面上進行寫保護 僅針對用戶空間提供保護 代碼將寫入該文件段,還是將其保留在 內核空間代碼中。
感謝
我有幾個關於linux內核內存頁面寫保護的問題。Linux內核代碼空間寫保護
我怎麼能計算出,如果內核 代碼(文本段)是寫 保護與否。我可以看看 /proc/<process-id>/map
以查看各種進程的內存映射。 但不知道在哪裏尋找 內核代碼的內存映射。
如果內核代碼段是寫 保護,那麼是否有可能 代碼段的網頁是 任何其他內核 級代碼覆蓋。換句話說, 是否在文本段頁面上進行寫保護 僅針對用戶空間提供保護 代碼將寫入該文件段,還是將其保留在 內核空間代碼中。
感謝
代碼在內核中運行具有當前地址空間的頁表的直接訪問,因此它可以通過檢查這些檢查寫訪問。可能有幫助您進行檢查的功能,但我不太熟悉mm代碼以指出它們。有更容易的方法嗎?我不確定。
內核文本不能從用戶空間寫入。該文本可以另外受到保護,防止從內核代碼寫入(我認爲這就是你正在談論的內容)。這只是防止錯誤的基本保護。內核代碼,如果真的想要,可以通過直接修改頁面表來禁用該保護。
有一篇論文在談論這件事。基本上,它使用一個小型管理程序來保護操作系統內核。
SecVisor:一種爲商品操作系統提供終身內核代碼完整性的微型系統管理程序。