Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <TlHelp32.h>
- #include <iostream>
- #include <tchar.h>
- using namespace std;
- DWORD dwGetModuleBaseAddress(DWORD dwProcessIdentifier, TCHAR *lpszModuleName)
- {
- HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessIdentifier);
- DWORD dwModuleBaseAddress = 0;
- if (hSnapshot != INVALID_HANDLE_VALUE)
- {
- MODULEENTRY32 ModuleEntry32 = { 0 };
- ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
- if (Module32First(hSnapshot, &ModuleEntry32))
- {
- do
- {
- if (_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0)
- {
- dwModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr;
- break;
- }
- } while (Module32Next(hSnapshot, &ModuleEntry32));
- }
- CloseHandle(hSnapshot);
- }
- return dwModuleBaseAddress;
- }
- int main()
- {
- HWND window = FindWindow(0, _T("Guild Wars 2"));
- if (window == 0){
- printf("Window not found!\n");
- char f;
- cin >> f;
- return 0;
- }
- DWORD pID = 0;
- GetWindowThreadProcessId(window, &pID);
- DWORD baseAddr = dwGetModuleBaseAddress(pID, _T("Gw2.exe"));
- DWORD staticOffset = 0x1430654;
- HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
- DWORD value;
- DWORD numBytesRead;
- ReadProcessMemory(handle, (LPCVOID)(baseAddr + staticOffset), &value, sizeof(DWORD), &numBytesRead);
- value += 0x16c;
- ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
- value += 0x54c;
- ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
- value += 0x0;
- ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
- value += 0x48;
- ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
- value += 8;
- ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
- CloseHandle(handle);
- cout << (float)value << endl;
- cin.get();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement