我一直在试图找到一种很好的方式来扫描另一个程序内存上的特定值(int)。我现在所做的工作,但我相信有更好的方式和方式更快的方式。如何在另一个进程内存中扫描INT值
DWORD pid;
DWORD Money = 0x04661128; //Address of money in-game
int MyMoney;
int MyMoneyReal;
int main()
{
HWND hWnd = FindWindowA(0, ("Euro Truck Simulator 2"));
GetWindowThreadProcessId(hWnd, &pid);
HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
cout << "Please input your exact current money value!" << pid << endl;
cin >> MyMoneyReal;
for (int i = 0; i < 0x7FFFFFFF; i++) {
ReadProcessMemory(pHandle, (LPVOID)i, &MyMoney, sizeof(MyMoney), 0);
if (MyMoney == MyMoneyReal) {
cout << "Found a match: " << MyMoney << MyMoneyReal << " With HEX value: " << hex << i << endl;
}
}
cout << "Processing...";
}
所以,你可以看到,我做了一个int MyMoney和MyMoneyReal。然后我继续在程序存储器中从0扫描到0x7FFFFFFF以查找包含MyMoneyReal的所有地址。 这需要很长时间才能完成,我相信有更好的方法,但我不知道如何。
我要补充:我是很新的C++所以任何额外的帮助总是好的:)
是的,这很慢。阅读更大的内存块,然后解析它。 – OldProgrammer
您可以使用VirtualQueryEx找出正在使用哪些内存部分,这也将为您节省大量时间。 –