как получить флаги защиты области памяти, флаги PROT_READ/PROT_EXEC в mprotect

Я использую mprotect() для установки флагов защиты области памяти. Позже я хочу восстановить флаги защиты этой области памяти.

Мой вопрос, как получить флаги защиты области памяти? флаги включают PROT_READ...

Мой обходной путь — разобрать /proc/self/maps вручную. Но это решение коряво...

Интересно, есть ли какой-нибудь системный вызов, который я могу использовать.


person flyingbin    schedule 05.08.2011    source источник


Ответы (1)


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

person R.. GitHub STOP HELPING ICE    schedule 05.08.2011