【发布时间】:2012-05-27 00:48:14
【问题描述】:
我使用WINAPI函数ReadProcessMemory从一个进程(地址:0x58F03C)读取了一些数据:
DWORD proc_id;
GetWindowThreadProcessId(hwnd, &proc_id);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
int value=0;
while (1)
{
ReadProcessMemory(hProcess, (LPVOID)0x58F03C, &value, sizeof(value), 0);
cout << "val: " << value << endl;
}
由于每次重新启动进程时地址都会更改,我想知道是否有办法始终获得相同的地址?必须有一个,因为我看到很多能够做到这一点的“培训师计划”。他们如何获得正确的地址值来读取/写入?
目前我通过使用CheatEngine 扫描一个值来获取它,然后执行下一次扫描以查找更改的值。
谢谢。
【问题讨论】:
-
除非可执行文件需要一个固定的基地址,否则这是不可能的。正如一些答案中所建议的那样,考虑从基地址开始的相对寻址。
标签: c++ winapi readprocessmemory object-address