2012-01-28 63 views
0

我讀的過程的記憶是這樣的:讀數偏移/指針

int MEM_BATTLESPEED_ADDR = 0x12EC900; // <- this is a static address 
int MEM_battleSpeed; 
if (ReadProcessMemory(hProcess,(void *) MEM_BATTLESPEED_ADDR, &MEM_battleSpeed, 4, NULL)) 
{ 
    cout << "MEM_battleSpeed: " << MEM_battleSpeed << "\r\n"; 
} 

地址是靜態的,所以,當我重新啓動應用程序永遠不會改變。我可以閱讀這個沒有問題。沒關係。

我的問題是,有些地址不是靜態的。我知道補償和指針,但我不知道如何閱讀以下內容:

[Info] 
$Static = 0x12BCAC8 
$Offset_1 = 0x07F8 
$Offset_2 = 0x000C 
$Offset_3 = 0x0284 

如何讀取[Info]值?

+0

是從$靜態字節偏移? – 2012-01-28 14:26:56

+0

是的,它們是4個字節。此外,他們在C.E中看起來像這樣:http://i.imgur.com/hSs6K.png – Aristona 2012-01-28 14:35:03

+0

你是什麼意思「他們是4字節」?偏移量比這大得多。你的意思是$ Offset_1,$ Offset_2和$ Offset_3的值應該被解釋爲內存地址$ Static的偏移量,是4個字節的倍數嗎? – user450018 2012-01-28 14:44:59

回答

0

將偏移到指針的內容,給你想要的地址:

Static = 0x12BCAC8; 
Offset_1 = 0x07F8; 

ReadProcessMemory(hProcess,(void *) (Static + Offset_1), &value, 4, NULL); 
+0

當我嘗試Static + Offset_1時,它會自動打印十進制值。它會工作嗎,因爲我無法使它工作。總是讀數爲0. – Aristona 2012-01-28 15:09:59

+0

我只會按照您發佈的圖片進行。來自指針的偏移地址只是兩者的總和。如果它不是你想要的,那麼你的靜態值不是真正的指針,或者偏移量不是以字節爲單位。 – 2012-01-28 15:34:13