到目前为止,这是我的代码:
ReadProcessMemory(hProc, (LPVOID)addr, &val, (DWORD)sizeof(val), NULL);
我想用C ++并在Cheat Engine的帮助下阅读VSXu Artiste声音可视化程序的VU(声卡音量)值。它与HMODULE hModule = GetModuleHandle(TEXT("sound.rtaudio.dll"));
完全正常,直到您重新打开VSXu。这很明显,因为Cheat Engine中我的值的地址是“sound.rtaudio.dll + 19098”,并且DLL加载到“随机”地址。
在Cheat Engine中,您只需在内存查看器中按Ctrl + G,然后键入DLL的名称即可找到其基址。我已经在C ++中尝试了GetModuleHandle方法但没有成功:
main
有谁知道如何使用C ++获取dll的基地址?
Cheat Engine截图:http://oi57.tinypic.com/331k7sw.jpg
亲切的问候,
罗伯特
答案 0 :(得分:0)
我想问题是因为你在自己的进程中调用了GetModuleHandle。您可以尝试使用的解决方案:
GetModuleInformation,它将在MODULEINFO中返回基址:
lpBaseOfDll
模块的加载地址。
要获取流程和模块句柄,您可以使用此处的示例代码:Enumerating All Modules For a Process