Как код/программное обеспечение может получить доступ к местоположениям в памяти, что это, как не предполагается?

По умолчанию, когда запущенные приложения, они ограничены в сумме RAM, их позволяют праву доступа? Технически мой VLC не мог получить доступ к адресам памяти, используемым Chrome. Но как для операционной системы / компилятор возможно по ошибке предоставить доступ к адресу, который не позволяется код. Я знаю большое 'использование', и 'полезные нагрузки' используют в своих интересах этот факт и создают переменные, которые занимают слишком много места и 'переполнения' в другие адреса, но как это на самом деле происходит?

Действительно ли некоторые программы более подвержены этому, чем другие? Это имеет значение, в котором языке они кодируются в? Например, я знаю, что C позволяют играть вокруг с памятью, в то время как Java не.

Кроме того, каковы преимущества этого? Что, если кто-то написал вредоносный код к доступу где-нибудь в памяти, что они могли сделать? Единственной вещью, о которой я могу думать, являются пароли/ключи, сохраненные в RAM.

PS я думал о помещении этого в Переполнении стека, но мой вопрос намного более широк, чем просто специфически связанный с перспективой программирования. Если я поместил его в неправильное место, я сожалею.

1
задан 11.04.2011, 03:21

2 ответа

достаточно странно это действительно включает переполнение - переполнение стека - использование тщательно обработанного процесса для израсходования пространства вне того, что это должно для изменения поведения цели prpgramme, или разрушать его

1
ответ дан 12.12.2019, 10:34

Отдельный момент: “переполнение” обычно интереса не позволяет одному приложению (процесс) перезаписывать другого; скорее они - просто данные, процесс обрабатывает то, чтобы заставлять программу перезаписать части себя (обычно стек, возможно косвенно) с теми данными, которые затем позволяют поглощение того процесса.

Затем тот процесс может взаимодействовать нормальным IPC и системными вызовами для принятия чего-либо еще, к чему учетная запись имеет доступ. VLC не может получить доступ к пространству памяти Chrome с обычным адресом, но это может:

  • Симулируйте быть отладчиком, присоединять к процессу Chrome и изменять его.
  • Перепишите любой из своих файлов и настроек учетной записи так, чтобы его код был выполнен в будущем каждый раз, когда Вы входите в систему.
  • Соединения открытой сети и само распространение к другим машинам.

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

2
ответ дан 12.12.2019, 10:34

Теги

Похожие вопросы