Мне было интересно, можно ли получить доступ к прямому блоку памяти с помощью 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, чтобы дать лучшее представление.