Мне было интересно, можно ли получить доступ к прямому блоку памяти с помощью 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. Моя цель - сделать это с помощью С++.
Если это слишком запутанно, в основном я хотел бы получить доступ к переменной, которую другое приложение хранило, используя свой адрес памяти, и распечатывать значение. Я использую Windows 7 x64 с компилятором MinGW, если это имеет значение. Спасибо!
PS: Я опубликую изображение того, что делает Cheat Engine, чтобы дать лучшую идею.