Управление памятью Linux

#memory-management #linux-kernel

#управление памятью #linux-ядро

Вопрос:

Есть ли какой-либо способ, которым я могу пометить страницу, выполняемую только без разрешений на чтение? (т. Е. способную выполнять инструкции на этой странице, не имея разрешений на чтение той страницы, которая является исполняемой.)

Моя конечная цель — создать страницу, которую я могу выполнить, но ни один другой процесс не должен иметь возможности предоставлять доступ к данным на этой странице..

Комментарии:

1. Просто из любопытства, как вы планируете разрешить разрешения на выполнение без чтения страницы? Я имею в виду… вам нужно прочитать инструкции, чтобы выполнить их, верно?

Ответ №1:

Это одна из вещей, зависящих от ядра и аппаратного обеспечения, как упоминалось на mprotect() странице руководства:

Имеет ли PROT_EXEC какой-либо эффект, отличный от PROT_READ, зависит от архитектуры и версии ядра.

В последних версиях ядер Linux / x86 эти флаги определенно дискретны, если ваш процессор поддерживает NX-бит. На других процессорах x86 это зависит от того, поддерживает ли ваше ядро Exec-Shield или другую аналогичную NX-разрядную эмуляцию.