Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CreateRemoteThread: benötigte Rechte (https://www.delphipraxis.net/43966-createremotethread-benoetigte-rechte.html)

Meflin 11. Apr 2005 14:02


CreateRemoteThread: benötigte Rechte
 
Moin,

bei der arbeit mit der CreateRemoteThread funktion stellt sich mir nun folgende frage: welhce rechte braucht der benutzer, damit das erfolgreich ausgeführt werden kann? das msdn meint
Zitat:

The handle must have the PROCESS_CREATE_THREAD, PROCESS_QUERY_INFORMATION, PROCESS_VM_OPERATION, PROCESS_VM_WRITE, and PROCESS_VM_READ access rights.
ok, schön und gut, nur sagt mir das nciht wirklich was :? kann man also - wenn man von einem normalen, keinem systemprozess ausgeht, also einem, der unter dem benutzer läuft, mit einem nicht administratoraccount (unter winxp z.b.) createremotethread erfolgreich ausführen? wie schauts mit den anderen betriebssystemen aus(2000, NT)?


NicoDE 11. Apr 2005 14:23

Re: CreateRemoteThread: benötigte Rechte
 
Zitat:

Zitat von Meflin
ok, schön und gut, nur sagt mir das nciht wirklich was :? kann man also - wenn man von einem normalen, keinem systemprozess ausgeht, also einem, der unter dem benutzer läuft, mit einem nicht administratoraccount (unter winxp z.b.) createremotethread erfolgreich ausführen? wie schauts mit den anderen betriebssystemen aus(2000, NT)?

Wenn die beiden Anwendungen unter dem gleichen Account gestartet wurden, dann ist sehr wahrscheinlich, dass CreateRemoteThread erfolgreich aufgerufen werden kann.
(wahrscheinich deshalb, weil einige Programme an der eigenen Sicherheitsbeschreibung herumspielen :))

Gruß Nico

ps: teste es doch einfach als Gast mit Notepad und einer Hello-DLL...
pps: wenn Du sicherstellen willst, dass es funktioniert, dann erzeuge den Prozess selbst - dann hast Du Vollzugriff...

Meflin 11. Apr 2005 14:33

Re: CreateRemoteThread: benötigte Rechte
 
ok, merci, das bestätigt mich in meiner annahme, nur wenn ich das glaube, und du das sagst, dann ist das zweierlei :mrgreen:

testen werde ichs auch noch, aber habe grade keine möglichkeit dazu, musste es aber trotzdem wissen :)


NicoDE 11. Apr 2005 14:38

Re: CreateRemoteThread: benötigte Rechte
 
Zitat:

Zitat von Meflin
aber habe grade keine möglichkeit dazu, musste es aber trotzdem wissen :)

Schreib ein Testprogramm und ich starte extra für Dich die VM... :)

brechi 11. Apr 2005 17:53

Re: CreateRemoteThread: benötigte Rechte
 
Das Zitat was du angefügt hast bezieht sich alleine auf das Handle das du mit OpenProcess von dem Process bekommen hast in dem den Thread erstellen willst.

D.h. es sollte bei allen Prozessen funktionieren die du EROLGREICH mit OpenProcess geöddnet hast. Bei Systemprozessen musst du vorher die Rechte bekommen.

der Code dafür:
Delphi-Quellcode:
function GetDebugPrivilege: boolean; stdcall;
var hToken,rel: cardinal;
    tkp: TOKEN_PRIVILEGES;
    luid: int64;
begin
  result := false;
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
  begin
    if LookupPrivilegeValue(nil, 'SeDebugPrivilege', luid) then
    begin
      tkp.PrivilegeCount           := 1;
      tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      tkp.Privileges[0].Luid       := luid;
      result := AdjustTokenPrivileges(hToken, FALSE, tkp, sizeof(tkp), nil, rel);
    end;
    CloseHandle(hToken);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz