Access Denied für OpenProcess???
-
Hi!
Ich habe da ein Problem mit OpenProcess. Normalerweise funktioniert es immer so wie es soll, doch bei einem bestimmten progamm erhalte ich immer kein Handle, bzw. 0 zurück. GetLastError() gibt dann 5, also Zugriff verweigert zurück. Wie kann das sein? Hat das programm irgendwelche sonderrechte und wenn ja, kann man die ändern?
-
Tja, mangels Kristallkugel...
Aber ich versuchs 'mal:
Mit welchem dwDesiredAccess versuchst du's denn?
Was Hast du mit dem Handle vor?
Welchen Prozess versuchst du zu öffnen?Greetz, Swordfish
-
Swordfish schrieb:
Tja, mangels Kristallkugel...
Aber ich versuchs 'mal:
Mit welchem dwDesiredAccess versuchst du's denn?Natürlich PROCESS_ALL_ACCESS
Was Hast du mit dem Handle vor?
Tastatureingaben simulieren, bzw. Tastenbefehle an die anwendung schicken. Vielleicht auch mit ReadProcessMemory oder WriteProcessMemory ein paar werte ändern.
Welchen Prozess versuchst du zu öffnen?
Starcraft. Ist ein Spiel, vielleicht sagt es dir was.

-
Ich habe es rausgefunden.
Man muss der eigenen Anwendung debug previlegien erteilen.
Dies ist eigentlich ganz selten der fall, aber wenn es mal sein muss benötigt man folgenden code, bevor man OpenProcess aufruft:HANDLE hToken; TOKEN_PRIVILEGES oldtp; DWORD dwSize; HANDLE hProc; LUID luid; TOKEN_PRIVILEGES tp; hProc = GetCurrentProcess(); if (!OpenProcessToken(hProc, TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken)) return; if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) { CloseHandle (hToken); return; } ZeroMemory(&tp, sizeof (tp)); tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!AdjustTokenPrivileges (hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) { CloseHandle(hToken); }
-
Hi,
Dies funktioniert aber auch nur als Administrator.
Es sei denn der Computer Admin hat dir bzw dem Benutzer das Recht gegeben, dann ist dies durchaus möglich, kann aber auch zu einem Sicherheitsloch werden.Deshalb sei vorsichtig mit der Verwendung von diesem Privileg

BR
Vinzenz
-
Letztens hat mal jemand einen Code vorgestellt, mit dem die Berechtigungen vom Prozess angepasst wurden, damit genau das nicht geht, was Du jetzt vor hast...
Wenn Du Admin bist, kannst Du aber natürlich die Berechtigungen wieder "zurücksetzen"...
-
Sorry habe ich vergessen. Ja, natürlich muss man Admin sein sonst geht das ganze nicht.
Es gibt tatsächlich einen Code, der es selbst einem Admin verbietet diese Previlegien zu ändern? Und was für ein Sicherheitsloch öffne ich damit?
-
Perner schrieb:
Sorry habe ich vergessen. Ja, natürlich muss man Admin sein sonst geht das ganze nicht.
Es gibt tatsächlich einen Code, der es selbst einem Admin verbietet diese Previlegien zu ändern? Und was für ein Sicherheitsloch öffne ich damit?
Wenn ein normaler Benutzer Debugrechte hat kann er mit ein paar Tricks Systemrechte erlangen. Wenn du weiter denkst kommst du vielleicht drauf was daran so gefährlich ist ^^
=> Das System darf _alles_!
BR
Vinzenz