tibiaWindow = FindWindow( L"TibiaClient", NULL);
DWORD PID;
GetWindowThreadProcessId( tibiaWindow, &PID );
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); //Open Process for Read/Write
short mana = 0;
void* ptr = (void*)hProcess+0x3C2D00;
if( !ReadProcessMemory(hProcess, ptr, &mana, 2, 0) ){
return false;
}
else{
statusBar()->showMessage( QString::number(mana), 3000 );
}
return true;
Run Code Online (Sandbox Code Playgroud)
这应该是从位于tibia.exe + 0x3CD2D00的游戏中读取法术力.但它不起作用.谁能帮我?如何获取该窗口的基址?
要在另一个进程中获取模块的基址,需要执行两个步骤:
EnumProcessModules.GetModuleFileNameEx,GetModuleBaseName直到找到匹配项.从步骤2获得的模块句柄是查询进程的地址空间中模块的基址.
您发布的偏移(0x3CD2D00)可能不是实际图像的一部分tibia.exe.这意味着该模块的大小至少为63MB,听起来不对.它可能驻留在某些其他模块的静态数据中,或者可能驻留在堆内存中,这使得您提出的方法无用.
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |