2012-07-19 22 views
0

我試圖通過讓手柄並打印其值設置爲獲得在C++的過程的起始地址。我試圖通過作弊引擎獲得蜘蛛紙牌的起始地址,它給了我「300905A4D」(目前就是這樣)。我嘗試每次我重新編譯和運行程序時,從C++的HANDLE獲取不同的地址?

HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid) 

而且每次我重新啓動我的C++程序的時候給了我一個不同的號碼/地址。我把蜘蛛紙牌始終處於運行狀態,並騙引擎一直給我相同的起始地址,但是當我打印

cout << &pHandle; 

我的C++程序每次都帶給我不同的數字。我在這裏做錯了什麼?另外,我的C++代碼工作正常。我可以寫信給記憶和所有這些,我只是想知道爲什麼我沒有得到Cheat Engine給我的同一個地址,以及爲什麼每次都是不同的地址。

+2

可能由於[地址空間佈局隨機化(http://en.wikipedia.org/wiki/Address_space_layout_randomization)功能。 – Blastfurnace 2012-07-19 19:50:03

+0

問題是? – 2012-07-19 19:52:54

+0

問題是我需要Cheat Engine以某種方式獲取地址作爲指針引用的起始地址。看,有一個值可以保證玩家所做的「移動」數量。該數字後面有一個指針,可以通過ANOTHER指針訪問(這將是靜態指針)。該指針是通過獲取過程中的基地址,如果它是不同的,甚至每一次,如果是完全一樣的方法(即從未關閉/重新啓動程序),它應該保持不變。我需要我的程序能夠獲取該地址,以便我能夠獲得指示。 – ZimZim 2012-07-19 20:08:13

回答

3

因爲你打印進程句柄變量的地址,和帽子可能會有所不同每次你的程序運行時間 - 在操作系統每次啓動您的應用程序在哪裏把你的過程和它的變量在內存決定。

+0

那麼我如何獲得C++過程的起始地址?顯然這並不完全符合我所希望的,但我需要在該地址中添加一些偏移量以獲得保持一定數量的值。 – ZimZim 2012-07-19 20:09:46

+0

@ user1007059要麼找到它描述了進程的地址,或沒有辦法做到這一點的把手結構的公共成員。 – 2012-07-19 20:12:06

+1

@ user1007059,你不能 - 你構建的任何地址將在你的進程地址空間中,而不是目標進程。您可以使用ReadProcessMemory/WriteProcessMemory訪問另一個進程的內存(並且耗盡了我對這些內容的瞭解)。 – 2012-07-20 11:49:19

相關問題