Wow MainModule Address

07/16/2011 23:32 Master674#1
Hi, hab heute mit C++ angefangen (ja 1. App überhaupt ^^) und hab ne frage hierzu;

Code:
UINT_PTR CMemory::GetModuleBaseAddress(DWORD iProcId, char* DLLName)
{
  HANDLE hSnap;
  MODULEENTRY32 xModule;
  hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, iProcId);
  xModule.dwSize = sizeof(xModule);
  if (Module32First(hSnap, &xModule))
  {
    while (Module32Next(hSnap, &xModule))
    {
        if (strcmp((char*)xModule.szModule, DLLName) == 0)
        {
			CloseHandle(hSnap);
			return (UINT_PTR)xModule.modBaseAddr;
        }
    }
  }
  CloseHandle(hSnap);
  return 0;
}
Die BaseAddress sollte ja immer UINT_PTR sein wenn ich da richtig liege.. habe das mal von ursprünglich DWORD schon korrigiert...

Diese Funktion soll eigentlich die Base Address des oben als char* angegebenen Moduls zurückgeben. Der Prozess ist über folgende Handle geöffnet:

Code:
PROC_HANDLE = OpenProcess(PROCESS_ALL_ACCESS|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, false, PROC_ID);
und sollte deshalb die nötigen Debug-Rechte besitzen.

Nun zur Frage:

die Funktion gibt in jeder Hinsicht "0" zurück. Aufrufen tu ich sie halt ganz normal...
Code:
BaseAddr = GetModuleBaseAddress(PROC_ID, "Wow.exe");
cout << "WoW MainModule located at: " << BaseAddr << endl;
weiß jemand was da der Grund dafür sein kann? -bitte wäre euch sehr dankbar ^^