#memory-management #linux-kernel
#управление памятью #linux-ядро
Вопрос:
Есть ли какой-либо способ, которым я могу пометить страницу, выполняемую только без разрешений на чтение? (т. Е. способную выполнять инструкции на этой странице, не имея разрешений на чтение той страницы, которая является исполняемой.)
Моя конечная цель — создать страницу, которую я могу выполнить, но ни один другой процесс не должен иметь возможности предоставлять доступ к данным на этой странице..
Комментарии:
1. Просто из любопытства, как вы планируете разрешить разрешения на выполнение без чтения страницы? Я имею в виду… вам нужно прочитать инструкции, чтобы выполнить их, верно?
Ответ №1:
Это одна из вещей, зависящих от ядра и аппаратного обеспечения, как упоминалось на mprotect()
странице руководства:
Имеет ли PROT_EXEC какой-либо эффект, отличный от PROT_READ, зависит от архитектуры и версии ядра.
В последних версиях ядер Linux / x86 эти флаги определенно дискретны, если ваш процессор поддерживает NX-бит. На других процессорах x86 это зависит от того, поддерживает ли ваше ядро Exec-Shield или другую аналогичную NX-разрядную эмуляцию.