Как получить флаги защиты области памяти, флаги PROT_READ /PROT_EXEC в mprotect
Я использую mprotect() для установки флагов защиты в области памяти. Позже я хочу восстановить флаги защиты этой области памяти.
У меня вопрос, как получить флаги защиты области памяти? флаги включают в себя PROT_READ ...
Мой обходной путь - разобрать /proc/self/maps вручную. Но это решение неуклюже...
Интересно, есть ли какой-нибудь системный вызов, который я могу использовать?
1 ответ
В общем, это единственный способ. POSIX не предоставляет способ доступа к защите. При использовании в конкретных приложениях, когда у вас есть контроль над кодом, отображающим страницу, вы можете сохранить флаги где-то в это время, но в целом вы должны прочитать /proc/self/maps
, Кроме того, вы можете откатиться до некоторых разрешений по умолчанию, если вы не можете прочитать /proc
, PROT_READ|PROT_WRITE
вероятно, является разумным значением по умолчанию для большинства вещей, но в некоторых случаях вы также можете захотеть PROT_EXEC
,