Сегодня у меня снова странный вопрос (по крайней мере, для меня это так). Я экспериментирую больше с указателями, и у меня в голове возникает мысль:
Код (только его часть)
int * firefoxmemory = (char*) 0x11111111 //this is just an example of address.
*firefoxmemory = 200;
Вопрос:
В приведенном выше коде я пытаюсь получить доступ к памяти, используемой Firefox (я использую редактор памяти для просмотра адреса), и после этого изменить его соответствующее значение. Но когда я пытаюсь это сделать, моя программа падает.
Почему это происходит с моей программой? Есть ли какой-то специальный код, используемый Firefox для предотвращения вмешательства сторонней программы в ее память? Или это делается аппаратным DEP для Windows и Intel?
Если DEP предотвращает вышеуказанное действие, почему некоторые программы редактирования памяти все еще работают, например, чит-движки, которые могут изменять значения в памяти?