Виртуальный адрес

63
8

Предположим, что я запускаю два экземпляра одной и той же программы. Будет ли текстовая область обеих программ иметь одинаковые виртуальные адреса?

спросил(а) 2021-01-25T15:47:43+03:00 4 месяца, 4 недели назад
1
Решение
63

Зависит. В большинстве систем, если вы дважды запускаете одну и ту же программу в одной среде (такие же параметры и т.д.), Вы найдете одно и то же сопоставление адресов. Это просто потому, что большая часть того, что делает процесс, является детерминированным, зависит только от среды, параметров командной строки, содержимого прочитанных файлов, но не от изменения данных, таких как дата или идентификатор процесса. Это очень полезно при отладке: если вы перезагружаете свою программу, иногда даже после небольшого изменения кода и перекомпиляции у вас есть шанс, что макет памяти остался прежним. Конечно, разные экземпляры программы, работающие одновременно, могут иметь одинаковые виртуальные адреса, но у них не будут одинаковые физические адреса.

Некоторые системы, такие как OpenBSD или Linux с различными настройками упрочнения, реализуют рандомизацию расположения пространства адресов (ASLR). ASLR означает, что каждый раз, когда начинается процесс, виртуальные адреса его кода, данных, стека (ов) и кучи (ов) определяются случайным образом. Это функции безопасности, предназначенные для упрощения использования уязвимостей безопасности: код эксплойта не может просто получить доступ к известному коду по известным адресам. Однако, поскольку ASLR становится все более популярным, эксплойты также становятся более сложными, чтобы обойти его. ASLR остается полезной, поскольку увеличивает рабочую нагрузку для автора эксплойтов, не добавляя много сложностей.

ответил(а) 2021-01-25T15:47:43+03:00 4 месяца, 4 недели назад
45

Наверное, нет, но возможно, что они могут. Каждый процесс имеет собственное независимое пространство памяти.

ответил(а) 2021-01-25T15:47:43+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема