Schönen Guten Tag zusammen,
Aufgrund dieses Threads hab ich ein Interesse für Zugriffsrechte auf Windows Systemen entwickelt. Nun habe ich mich rangesetzt und wollte ein Programm schreiben das nun das Access Tokens eines unter dem System Account gestarteten Programm entnimmt um damit ein Prozess mit diesen Rechten zu starten.
int main()
{
HANDLE hToken;
int pid = GetProcId("winlogon.exe");
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
if (hProc == INVALID_HANDLE_VALUE)
{
std::cout<<GetLastError()<<std::endl;
}
if (!OpenProcessToken(hProc,TOKEN_ALL_ACCESS,&hToken))
{
std::cout<<"Error Opening Process Token : "<<GetLastError()<<std::endl;
}
system("pause");
return 0;
}
int GetProcId(char *pname)
{
PROCESSENTRY32 pEntry;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
pEntry.dwSize = sizeof(PROCESSENTRY32);
while(Process32Next(hSnap,&pEntry))
{
if (strcmp(pname,pEntry.szExeFile) == 0)
{
return pEntry.th32ProcessID;
}
}
}
Alles anzeigen
Das ist mein bisheriger Code,es hackt momentan das Token eines System Prozesses zu öffnen.Denn OpenProcessToken liefert mir hier den Wert 5(ACCESS_VIOLATION) zurück und seit Heute komischerweise auch ERROR_INVALID_HANDLE. Das System scheint ja dazwischen zu funken.Was wäre hierbei eine Lösung?Ich hab mir auch schon überlegt mit SetPrivilege zu arbeiten um damit das SEDebugPrivilege zu setzten.
Hab die Binary auch mal hochgeladen.