Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Beenden eines Prozesses mittels ACL verhindern (https://www.delphipraxis.net/53522-beenden-eines-prozesses-mittels-acl-verhindern.html)

Zacherl 18. Sep 2005 12:33


Beenden eines Prozesses mittels ACL verhindern
 
Hallo,
da ich mir den Code zum Verstecken eines Prozesses vor dem Taskmanager angeguckt habe, wurde ich darauf verwiesen lieber das Beenden eines Prozesses mit den ACLs zu verhindern.

Meine Fragen: Geht dies mit eingeschränkten Rechten? Hat vielleicht jemand eine Beispiel Anwendung? Ich kenne mich in diesem Anwendungsgebiet nicht gut aus, daher wäre ein Beispiel halt sinnvoll.

Florian

Olli 18. Sep 2005 13:06

Re: Beenden eines Prozesses mittels ACL verhindern
 
Es geht immer. Auch mit eingeschränkten Rechten. Allein, es hilft nur bedingt, weil sich ein Admin oder das System die nötigen Rechte besorgen kann ;)

Verbieten kannst du den Zugriff im ACL aber schonmal für alle außer dem Benutzer in dessen Kontext du läufst. Absolutismen gibt es eben nicht ;)

Zacherl 18. Sep 2005 13:24

Re: Beenden eines Prozesses mittels ACL verhindern
 
Gut. Es geht nämlich auch nicht um die Admins, die das Programm nicht beenden sollen.
Hast du vielleicht einen kleinen Quelltext? Wie gesagt, in dem Gebiet kenne ich mich nicht sehr gut aus ...

Florian

Olli 18. Sep 2005 13:30

Re: Beenden eines Prozesses mittels ACL verhindern
 
Dann wühle dich mal von MSDN-Library durchsuchenSetKernelObjectSecurity aus durch die Funktionen. Auf NT4 gibt's ein paar Fallgruben, aber das ist ja möglicherweise nicht zu akut. Ansonsten ist die einzige nichtkommerzielle Seite, die ich zum Thema Sicherheit mit Delphi kannte, irgendwann im letzten Jahr in den Tiefen des WWW begraben worden :| ... die gibt's also nicht mehr. Aber o.g. Funktion sollte dich schon weiterbringen.

Unter http://jedi-apilib.sf.net solltest du eigentlich auch die Deklarationen der entsprechenden Funktionen und Strukturen finden.

Zacherl 15. Mär 2006 19:02

Re: Beenden eines Prozesses mittels ACL verhindern
 
Ich komme nicht klar mit der SetKernelObjectSecurity Funktion.
Bitte nennt mir ein Aufrufbeispiel wie man das Beenden des eigenen Prozesses verhindert.

Der 1. Parameter ist schonmal die ProcessID, denke ich.

Florian

Zacherl 15. Mär 2006 19:13

Re: Beenden eines Prozesses mittels ACL verhindern
 
Habe diesen Source gefunden:

Delphi-Quellcode:
var
      lpSecDesc: pointer;
      lpACL: PACL;
      dwSecurityInfo: DWORD;
begin
      GetMem(lpSecDesc, SECURITY_DESCRIPTOR_MIN_LENGTH);
      InitializeSecurityDescriptor(lpSecDesc, 1);
      GetMem(lpACL, SizeOf(TACL));
      InitializeACL(lpACL^, SizeOf(TACL), 2);
      SetSecurityDescriptorDACL(lpSecDesc, True, lpACL, False);
      dwSecurityInfo:= DACL_SECURITY_INFORMATION;
      SetKernelObjectSecurity(GetCurrentProcess, dwSecurityInfo, lpSecDesc);
      FreeMem(lpACL);
      FreeMem(lpSecDesc);
end;
Und hier noch eine Beschreibung, wie man seinen Prozess unbeendbar macht, die ich auch nicht verstehe:

Zitat:

Get a handle to the process you want to protect (GetCurrentProcess for the
current process).
Pass the handle to GetKernelObjectSecurity to get its DACL. Add a Denied
ACE to it specifying the current user's SID (or better yet, the well-known
SID for "Everyone"), and the PROCESS_TERMINATE right. Call
SetKernelObjectSecurity to update the process' DACL.
Nur was bewirkt dieser?

Zacherl 16. Mär 2006 19:08

Re: Beenden eines Prozesses mittels ACL verhindern
 
*push*

Tut mir Leid, musste sein ...

Zacherl 19. Mär 2006 16:30

Re: Beenden eines Prozesses mittels ACL verhindern
 
Kann wirklich keiner helfen?
Ich habe jetzt bestimmt schon 2 Stunden in etlichen Suchmaschienen gesucht, aber nichts außer die schon geposteten Sachen gefunden.
Alle meine Delphi Bücher gehen auch nicht näher auf die API ein.

Zacherl 21. Mär 2006 14:09

Re: Beenden eines Prozesses mittels ACL verhindern
 
Jetzt habe ich noch AddDeniedACE gefunden. Nur die ganze Struktur ist umständlich. Da gibt es _ACL oder PACL, welcher ein Pointer auf _ACL ist, oder so ähnlich.
Wie kann ich das anwenden?
Ich hab überhaupt keine Ahnung.

Alexander Roth 29. Jul 2006 15:40

Re: Beenden eines Prozesses mittels ACL verhindern
 
Hi Leute,

ich habe genau das gleiche Problem.
Zitat:

Zitat von Florian Bernd
Habe diesen Source gefunden:

Delphi-Quellcode:
var
      lpSecDesc: pointer;
      lpACL: PACL;
      dwSecurityInfo: DWORD;
begin
      GetMem(lpSecDesc, SECURITY_DESCRIPTOR_MIN_LENGTH);
      InitializeSecurityDescriptor(lpSecDesc, 1);
      GetMem(lpACL, SizeOf(TACL));
      InitializeACL(lpACL^, SizeOf(TACL), 2);
      SetSecurityDescriptorDACL(lpSecDesc, True, lpACL, False);
      dwSecurityInfo:= DACL_SECURITY_INFORMATION;
      SetKernelObjectSecurity(GetCurrentProcess, dwSecurityInfo, lpSecDesc);
      FreeMem(lpACL);
      FreeMem(lpSecDesc);
end;

Ok compilieren tut er das. Doch funktionieren tut es nicht.
Bei mir kann ich das Programm sowohl über das X als auch über den Taskmanager killen. :cry:

PS: @Florian Bernd: Es gibt ein edit Feld rechts oben bei jedem Beitrag. Da muss man nicht immer einen neuen schreiben. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.
Seite 1 von 3  1 23      

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