Да.
Однако обратите внимание, что после fork
к родителю и ребенку применяется одинаковая рандомизация (в конце концов, они являются копиями друг друга!).
Если ребенок и родитель звонят mmap(NULL, ...)
, , тогда их адресные карты начнут расходиться.
Обновление:
Разве ваше утверждение не противоречит?
Совсем нет. Сразу после fork
родительское и дочернее адресные пространства идентичны (это определение того, что делает fork
). Но ASLR все еще действует как для родителя, так и для ребенка. Рандомизация не может «вернуться назад во времени» и рандомизировать решения, которые уже были приняты, но любые будущие решения (например, где разместить следующие mmap
) будут случайными и, вероятно, приведут к различный результат для родителя и ребенка.
Имеет ли это отношение к основному mmap или оператору записи, вводящему случайность в mmap, а также для безопасности?
Возможно, вы не понимаете, что такое ASLR?
Короче говоря, при включенном ASLR ОС будет r и определять размещение основного стека и размещение любых не MAP_FIXED
mmaps .
К тому времени, как вы fork
, размещение в главном стеке уже давно определено, поэтому родительский и дочерний элементы будут одинаковыми. Будущее mmap
- единственное, что может (и будет) затронуто ASLR в будущем.