2012-01-28 64 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