Позвольте мне попытаться ответить на это в общем режиме.Исполняемый файл - это набор инструкций, которые указывают загрузчику, как настроить адресное пространство программы.Загрузчик будет отображать страницы в адресное пространство процесса, следуя этим инструкциям.
Все допустимые страницы будут доступны для чтения.Таким образом, вы имеете дело только с комбинациями
Исполняемый (X) и Записываемый (W)
, что дает возможные комбинации
R
RX
RXW
R W
RXW необычно, но этопроисходят.Я видел приложения, которые кодируют свои инструкции и декодируют во время выполнения.Мы можем игнорировать этот случай.На самом деле один остается с:
R Readonly (Data, such as strings or numeric constants, tabular data)
RX Code
R W Read Write (static, global, stack, heap, etc.)
Если у вас есть что-то вроде
const char something [] = "SOMETHING" ;
Текст ЧТО-то, скорее всего, будет на странице только для чтения.