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