Usage:

GetModuleBaseAddress(PID, L"모듈이름");



uintptr_t GetModuleBaseAddress(

    DWORD procId, 

    const wchar_t* modName)

{

    uintptr_t modBaseAddr = 0;

    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);

    if (hSnap != INVALID_HANDLE_VALUE)

    {

        MODULEENTRY32 modEntry;

        modEntry.dwSize = sizeof(modEntry);

        if (Module32First(hSnap, &modEntry))

        {

            do

            {

                if (!_wcsicmp(modEntry.szModule, modName))

                {

                    modBaseAddr = (uintptr_t)modEntry.modBaseAddr;

                    break;

                }

            } while (Module32Next(hSnap, &modEntry));

        }

    }

    CloseHandle(hSnap);

    return modBaseAddr;

}