Home of Gamehacking - Archiv

Normale Version: [C++] GetModuleBaseAddress
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey,
hier mal nen Codesnippet, wie man die BaseAdresse eines Moduls bekommt, wenn man den Prozessnamen und den Modulnamen hat (könne auch gleich sein).

C Code
DWORD GetModuleBaseAddress(LPCWSTR szProcessName, LPCWSTR szModuleName)
{
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    PROCESSENTRY32 pe32;

    if(hSnap == INVALID_HANDLE_VALUE)
    {
        return 0;
    }
    pe32.dwSize = sizeof(PROCESSENTRY32);
    if(Process32First(hSnap, &pe32) == 0)
    {
        CloseHandle(hSnap);
        return 0;
    }

    do 
    {
        if(lstrcmp(pe32.szExeFile, szProcessName)== 0)
        {
            int PID;
            PID = pe32.th32ProcessID;

            HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
            MODULEENTRY32 xModule;

            if (hSnap == INVALID_HANDLE_VALUE)
            {
                return 0;
            }
            xModule.dwSize = sizeof(MODULEENTRY32);
            if (Module32First(hSnap, &xModule) == 0)
            {
                CloseHandle(hSnap);
                return 0;
            } 

            do 
            {
                if (lstrcmp(xModule.szModule, szModuleName) == 0)
                {
                    CloseHandle(hSnap);
                    return (DWORD)xModule.modBaseAddr;
                }
            } 
            while (Module32Next(hSnap, &xModule));
            CloseHandle(hSnap);
            return 0;
        }
    } 
    while (Process32Next(hSnap, &pe32));
    CloseHandle(hSnap);
    return 0;
}