簡體   English   中英

字節級寫訪問保護?

[英]byte level write access protection?

保護頁面以進行讀和/或寫訪問是可能的,因為頁面表項中的某些位可以在內核級別打開和關閉。 有沒有一種方法可以保護某些內存區域免受寫訪問,可以說在C結構中,某些變量需要被寫保護,對它們的任何寫訪問都將觸發段錯誤和核心轉儲。 它類似於在頁面級別工作的mprotect()的按比例縮小功能,它在用戶空間中有一種類似於字節級別的類似機制。

謝謝,Kapil Upadhayay。

不,沒有這樣的設施。 如果需要按數據對象保護,則必須為每個對象至少分配一個頁面(使用mmap )。 如果您還想對對象末尾(對於數組)的訪問進行某種保護,則可以分配至少比您所需的頁面多的頁面,對齊對象,使其mprotect在頁面邊界結束,然后使用mprotect進行保護您分配的一個或多個其他頁面。

當然,這種方法會導致程序運行緩慢,並浪費大量資源。 除了作為一種調試技術外,它可能不可行,並且valgrind可以更有效地滿足這一需求,而無需修改程序。

一種方法(盡管非常慢)是保護對象所在的整個頁面。 每當對該頁面進行寫訪問時,都會調用您的無效頁面訪問自定義處理程序,並通過快速取消保護該頁面,寫入數據然后再次保護該頁面來解決這種情況。

這對於單線程程序很好用,我不確定對多線程程序應該做什么。

這個想法可能並不新鮮,因此您可以找到一些信息甚至是現成的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM