Взлом памяти/распределение памяти: почему это работает и как?C++

Программы на C++. Форум разработчиков
Anonymous
Взлом памяти/распределение памяти: почему это работает и как?

Сообщение Anonymous »

Я знаю, что вы ищете какой-то адрес некоторых переменных в программе, которой пытаетесь манипулировать. И как только вы его найдете, вы попытаетесь найти для него «базовый указатель», чтобы независимо от того, где находится процесс, вы все равно могли получить доступ к этим переменным. Я имею в виду, что при перезапуске процесса переменные будут иметь разные адреса, но вы все равно знаете где они.

Теперь я не понимаю, почему это возможно?

допустим, я делаю это на C++ :

Код: Выделить всё

int *x = (int*)malloc(sizeOf(int));
разве это не динамично? и не должен ли x быть помещен в «случайный» адрес, который был свободен в то время?
По сути, я спрашиваю, где на самом деле находится x, когда этот код выполняется?

РЕДАКТИРОВАТЬ: я имею в виду, что обычно переменные, такие как здоровье, хранятся по таким адресам, как game.exe + 0000caff, и тогда вы всегда можете найти их там.

EDIT: я имею в виду, что обычно переменные, такие как Health, хранятся по адресам, таким как game.exe + 0000caff, и тогда вы всегда можете найти их там.

EDIT: обычно переменные, такие как Health, хранятся по адресам, таким как game.exe + 0000caff, и тогда вы всегда можете найти их там.>

Подробнее здесь: https://stackoverflow.com/questions/297 ... rk-and-how

Вернуться в «C++»