Мне интереснее концептуально, чем практически. Write-xor-execute, по-видимому, означает, что код должен оставаться постоянным в памяти, поэтому самомодификация не будет разрешена. Это так?Означает ли концепция OpenBSD W^X автоматическую модификацию кода?
0
A
ответ
2
№ W^X - это просто политика для нормальных отображений, созданных с помощью инструментальной цепочки и ядра для запуска обычных программ. Это означает, что компилятор, компоновщик и ядро не будут создавать сопоставления, которые одновременно исполняются и записываются.
Это не является жестким ограничением, обеспечиваемым ядром. Ничто не мешает вам создавать сопоставления памяти, которые являются как записываемыми, так и исполняемыми. И даже если такое ограничение существует, ничто не мешает вам создавать записываемое сопоставление памяти, записывая в него, а затем меняя защиту на чтение и исполняемый файл (это будет разумная вещь).