#include <windows.h>
#include <TlHelp32.h>
#include <ctime>
#include <iostream>
using namespace std;
DWORD getBaseModuleAddr(DWORD processID) ;
LPCSTR gameWindowName = "Darksiders II (531964)" ;
int mainTimer = clock() ;
bool isGameOn ;
int main()
{
HWND hWnd ;
DWORD processId ;
DWORD baseAddr ;
HANDLE hProcess = NULL ;
while(!GetAsyncKeyState(VK_INSERT))
{
if((clock() - mainTimer) > 1500)
{
mainTimer = clock() ;
hWnd = FindWindow(NULL, gameWindowName) ;
if(hWnd)
{
GetWindowThreadProcessId(hWnd, &processId) ;
if(processId)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, processId) ;
if(hProcess)
{
isGameOn = true ;
}
else cerr << "Cannot OPEN process" <<endl ;
}
else cerr << "Cannot FIND process ID" <<endl ;
}
else
{
cerr << "Cannot FIND game" <<endl ;
isGameOn = false ;
}
}
if(isGameOn)
{
baseAddr = getBaseModuleAddr(processId) + 0x012BAB6C ;
cout << "Base address --> " <<baseAddr;
cin.get() ;
}
}
CloseHandle(hProcess) ;
return 0 ;
}
DWORD getBaseModuleAddr(DWORD processId)
{
HANDLE hSnap ;
MODULEENTRY32 xModule ;
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, processId) ;
xModule.dwSize = sizeof(MODULEENTRY32) ;
Module32First(hSnap, &xModule) ;
CloseHandle(hSnap) ;
return (DWORD)xModule.modBaseAddr ;
}