szExePath возвращает путь модуля, если не изменяет память, а не адрес.Лучше раздели на 2 функции. А то, пока читал твой код запутался. Вот готовый рабочий код, переделаешь под себя если надо. MSDN void Process(char *Processname){ HANDLE hPID = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); PROCESSENTRY32 ProcEntry; ProcEntry.dwSize = sizeof(ProcEntry); do if (!strcmp(ProcEntry.szExeFile, Processname)) { PID = ProcEntry.th32ProcessID; CloseHandle(hPID); hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); return; } while (Process32Next(hPID, &ProcEntry)); system("pause"); exit(0);} DWORD GetModule(char* ModuleName){ HANDLE hModule = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID); MODULEENTRY32 mEntry; mEntry.dwSize = sizeof(mEntry); do if (!strcmp(mEntry.szModule, ModuleName)) { CloseHandle(hModule); return (DWORD)mEntry.modBaseAddr; } while (Module32Next(hModule, &mEntry)); return 0;}