C++:
#include <iostream>
#include <windows.h>
#include <TlHelp32.h>
using namespace std;
uintptr_t GetModuleBaseAddress(DWORD dwProcID, const char* szModuleName)
{
uintptr_t ModuleBaseAddress = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwProcID);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
MODULEENTRY32 ModuleEntry32;
ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hSnapshot, &ModuleEntry32))
{
do
{
if (strcmp(ModuleEntry32.szModule, szModuleName) == 0)
{
ModuleBaseAddress = (uintptr_t)ModuleEntry32.modBaseAddr;
break;
}
} while (Module32Next(hSnapshot, &ModuleEntry32));
}
CloseHandle(hSnapshot);
}
return ModuleBaseAddress;
}
int main()
{
DWORD dwProcId;
HWND hWnd = FindWindowA(NULL, ("GTA:SA:MP"));
GetWindowThreadProcessId(hWnd, &dwProcId);
HANDLE pHandle = OpenProcess(PROCESS_VM_READ, FALSE, dwProcId);
uintptr_t Baseaddr = (uintptr_t)GetModuleBaseAddress(dwProcId, "samp.dll");
return 0;
}
Tested , works good.
Last edited: