1
我使用mprotect()將保護標誌設置到內存區域。 稍後,我想恢復此內存區域的保護標誌。如何獲得內存區域的保護標誌,標誌是mprotect中的PROT_READ/PROT_EXEC
我的問題是,如何獲得內存區域的保護標誌? 的標誌包括PROT_READ ...
我的解決方法是手動解析/ proc/self/maps。 但這種解決方案是笨拙的...
我不知道是否有任何系統調用,我可以使用。
我使用mprotect()將保護標誌設置到內存區域。 稍後,我想恢復此內存區域的保護標誌。如何獲得內存區域的保護標誌,標誌是mprotect中的PROT_READ/PROT_EXEC
我的問題是,如何獲得內存區域的保護標誌? 的標誌包括PROT_READ ...
我的解決方法是手動解析/ proc/self/maps。 但這種解決方案是笨拙的...
我不知道是否有任何系統調用,我可以使用。
通常這是唯一的方法。 POSIX不提供訪問保護的方法。在您可以控制映射頁面的代碼的應用程序特定用法中,您可以在當時將該標誌保存在某處,但通常您必須閱讀/proc/self/maps
。另外,如果您無法閱讀/proc
,則可能需要回退到某些默認權限。 PROT_READ|PROT_WRITE
可能是大多數情況下合理的默認設置,但在某些情況下,您可能還需要PROT_EXEC
。