Доступ к памяти, используемой другой программой

Сегодня у меня снова странный вопрос (на по крайней мере, для меня это так). Я больше экспериментирую с указателями, и у меня в голове возникает следующая идея:

Код (только его часть)

int * firefoxmemory = (char*) 0x11111111 //this is just an example of address.
*firefoxmemory = 200;

Вопрос:

В приведенном выше коде я пытаюсь получить доступ к памяти, используемой firefox (я использую редактор памяти для просмотра адреса) и после этого меняю его соответствующее значение. Но когда я пытаюсь это сделать, моя программа вылетает.

Почему это происходит с моей программой? Есть ли какой-то специальный код, используемый Firefox, чтобы предотвратить вмешательство сторонней программы в его память? Или это делается с помощью аппаратного DEP Windows и Intel?

Если описанное выше действие предотвращается с помощью DEP, почему некоторые программы для редактирования памяти все еще работают, например, чит-движки, которые могут изменять значения в памяти?

8
задан Robotnik 9 December 2015 в 06:55
поделиться