Мне было интересно, можно ли получить доступ к прямому блоку памяти с помощью C / C ++ и получить значение. Например:
int i = 15;
int *p = &i;
cout << &i;
Если бы я взял напечатанное значение здесь, это дало бы мне адрес переменной i, которая содержит значение 15. Я просто скажу, что это распечатало 0x0ff9c1 для этого примера. Если у меня есть отдельная программа, которая объявляет указатель так ...
int *p = 0x0ff9c1;
cout << *p;
Можно ли распечатать ту 15, которую другое приложение поместило в блок памяти 0x0ff9c1? Я знаю, что мое объявление указателя с адресом памяти неверно, я не уверен, как это сделать иначе. Я попытался использовать memcopy
, но я не смог заставить это работать. Я знаю, что это как-то возможно, поскольку у меня есть программа под названием Cheat Engine, которая изменяет значения адресов игровой памяти, чтобы получить несправедливые преимущества. Я успешно разместил напечатанную ячейку памяти и получил значение (15) через Cheat Engine. Моя цель сделать это с помощью C ++.
Если это слишком запутанно, я бы хотел получить доступ к переменной, сохраненной другим приложением, используя адрес своей памяти, и распечатать значение. Я использую Windows 7 x64 с компилятором MinGW, если это имеет значение. Спасибо!
PS: я опубликую фотографию того, что делает Cheat Engine, чтобы дать лучшую идею.