我想知道是否可以使用C/C++訪問直接內存塊並獲取值。例如:訪問直接內存地址並獲取C++中的值
int i = 15;
int *p = &i;
cout << &i;
如果我把打印的價值在這裏,那會給我的變量i,後者含有值15.我只想說這打印出來0x0ff9c1在這個例子中的地址。如果我有一個單獨的程序,它聲明,像這樣的指針...
int *p = 0x0ff9c1;
cout << *p;
是否可以打印出15放置在內存塊0x0ff9c1其他應用程序?我知道我的指針聲明與內存地址是不正確的,我不確定如何去做,否則。我曾嘗試使用memcopy
,但我還沒有能夠得到這個工作。我知道這是可能的,因爲我有一個名爲Cheat Engine的程序,它修改遊戲內存地址值以獲得不公平的優勢。我已經成功地放置了打印的內存位置並通過作弊引擎獲得了值(15)。我的目標是使用C++來做到這一點。 如果這太混亂了,基本上我想訪問另一個應用程序使用其內存地址存儲的變量並打印出該值。如果有問題,我正在使用Windows 7 x64和MinGW編譯器。謝謝! PS:我會張貼一張關於Cheat Engine做什麼的圖片來提供一個更好的主意。
+1。 – Nawaz
讀一本關於虛擬內存的書。作爲附加說明:linux和一些新版本的Windows採用堆棧隨機化,所以程序執行時局部變量的地址會有所不同。 – unkulunkulu
是的,雖然我發現了實驗。我正在考慮通過執行參數將地址導出到第二個程序。我會研究虛擬內存,謝謝你的提示。 – llk