Надо узнать по PID имя процесса под учёткой пользователя (абсолютно бесправного). Набросал следующее: HMODULE hMod; DWORD cbNeeded; HANDLE hToken; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken)) return FALSE; TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1; LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid); tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, false, &tp, sizeof(tp), NULL, NULL); CloseHandle(hToken); !!!!Валится здесь, на открытии процесса ERROR_ACCESS_DENIED HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwParentPID); if (!hProcess) return FALSE; if (EnumProcessModules(hProcess, &hMod, sizeof (hMod), &cbNeeded)) { if (GetModuleFileNameEx(hProcess, hMod, szParentProcessPath, sizeof( szParentProcessPath))) //Путь и имя { CloseHandle(hProcess); return TRUE; } } CloseHandle(hProcess); return FALSE; Заранее отвечаю - да, под админом всё нормально.
угу сплоетом, для какойнибудь winxp sp2 и ниже можно найти известные баги в апи ф-циях позволяющие читать память чужого процесса
Ursus Пароль админа знаю. Не догоняю, что мне это даёт. Запускать программу (или создавать процесс) от учётки админа?
leo Не, не катит HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwParentPID); if (!pSnap) return FALSE; MODULEENTRY32 me; me.dwSize = sizeof MODULEENTRY32; if (!Module32First(pSnap, &me)) return FALSE; CreateToolhelp32Snapshot возвращает INVALID_HANDLE_VALUE.
Зачем процесс создавать, вроде автору только токен нужен подходящий. Получаем его через LogonUser(), затем копируем себе посредством NtDuplicateToken и назначаем текущему треду(кл. ThreadImpersonationToken), для этого есть готовая апи ImpersonateLoggedOnUser() и на васме статья.
Спасибо за ответы. К варианту предложенному Clerk уже сам подбирался. И всё же странно, почему нельзя прочесть память процесса, зато можно его завершить. Вариант с SE_SHUTDOWN_NAME прокатывает на ура.
MirrorBlack В висте есть процессы, которые в юзер-моде даже с полными админскими правами не прочитать. Например audiodg.