По умолчанию при запуске приложений они ограничены объемом ОЗУ, к которому им разрешен доступ? Технически мой VLC не мог получить доступ к адресам памяти, используемым Chrome. Но как операционная система / компилятор может ошибочно разрешить доступ к адресу, код которого не разрешен? Я знаю, что многие «эксплойты» и «полезные нагрузки» используют этот факт и создают переменные, которые занимают слишком много места и «переполняются» на другие адреса, но как это происходит на самом деле?
Некоторые программы более склонны к этому, чем другие? Имеет ли значение, на каком языке они закодированы? Например, я знаю, что C может играть с памятью, а Java - нет.
Кроме того, каковы преимущества этого? Что если кто-то напишет вредоносный код для доступа к памяти, что он сможет сделать? Единственное, о чем я могу думать, это пароли / ключи, хранящиеся в оперативной памяти.
PS Я думал о том, чтобы поместить это в переполнение стека, но мой вопрос гораздо шире, чем просто связанный с перспективой программирования. Если я поместил это в неправильном месте, извините.