AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

System-Privilegien

Ein Thema von WinAPI · begonnen am 7. Mai 2008 · letzter Beitrag vom 28. Jul 2008
Antwort Antwort
WinAPI

Registriert seit: 7. Mai 2008
12 Beiträge
 
Delphi 7 Personal
 
#1

System-Privilegien

  Alt 7. Mai 2008, 20:51
Hallo,
ich habe ein kleines Tool entwickelt was Werte aus dem Speicher eines laufenden Prozesses ausliest.
Allerdings hat dieses Tool eigentlich keine Rechte auf diesen Prozess zuzugreifen ...
Ich musste jedesmal die Rechte manuell mit einem Tool aus dem internet verteilen (PermEdit)
Wie kann ich das in Delphi selberschreiben ?
Hat da jemand eine Idee ?

MfG Ich
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: System-Privilegien

  Alt 7. Mai 2008, 23:23
Seh ich kein Problem. App einfach als Admin starten und das DEBUG-Privileg aktivieren. Dann klappts auch mit OpenProcess.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#3

Re: System-Privilegien

  Alt 21. Jun 2008, 15:20
Und wie sieht es aus? Lösung gefunden? Hat mein Vorschlag was gebracht?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#4

Re: System-Privilegien

  Alt 27. Jul 2008, 21:07
Hallo,

ich klemme gerade an der Stelle, dass nun so wirklich garnichts geht außerhalb des Prozesses (XP SP2, als Admin).

Ich rufe OpenProcess folgendermaßen auf:
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID); dabei bekomme ich, wenn ich mit PID := GetCurrentProcessID arbeite, bei ReadProcessMemory nur einen Berg Gerümpel und sobald ich einen Fremdprozess aufrufe ist GetLastError = 87 (ungültige Parameterkombination "The parameter is incorrect.").

Zuvor setze ich mit
Delphi-Quellcode:
function EnableTokenPrivilege(pszPrivilege: LPCTSTR): Boolean;
var
  hToken : THandle;
  tkp :_TOKEN_PRIVILEGES;
  ReturnLength: Cardinal;

begin
   hToken := 0;
   tkp.PrivilegeCount := 0;
   result := false;

    // Get a token for this process.
    if not _OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, @hToken)
      then begin writeln('Cannot open current process token.'); exit; end;

    // Get the LUID for the privilege.
    if(LookupPrivilegeValue(LP_SYSTEM_NAME_LOCAL, pszPrivilege,tkp.Privileges[0].Luid)) then
    begin
        tkp.PrivilegeCount := 1; // one privilege to set
        tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

        // Set the privilege for this process
        _AdjustTokenPrivileges(hToken,false, @tkp,
            sizeof(TOKEN_PRIVILEGES),PTOKEN_PRIVILEGES(nil), @ReturnLength);
        if (GetLastError() <> ERROR_SUCCESS) then begin writeln('Adjusting token privileges failed.'); exit; end;
    end;

  result := true;
end;
das Privileg SE_DEBUG_NAME = 'SeDebugPrivilege'#0 (was auch zu funktionieren scheint). (Übersetzt von hier)

------------------------------------------------

Nun, wie setze ich die Debuggingrechte?
Power is nothing without TControl
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: System-Privilegien

  Alt 27. Jul 2008, 21:26
Du benutzt eher ReadProcessMemory falsch.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#6

Re: System-Privilegien

  Alt 27. Jul 2008, 21:31
ok ich hatte es an anderer Stelle verbockt. Nun zu ReadProcessMemory...
Power is nothing without TControl
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#7

Re: System-Privilegien

  Alt 28. Jul 2008, 06:59
Jawohl.
Taskmanager mit restart-Funktion ist fertig und meine Bibliothek um eine schöne Funktion GetCommandLine(pID:Cardinal):string; reicher.

@Themenersteller: vielleicht nutzt ja die Funktion
function EnableTokenPrivilege(pszPrivilege: LPCTSTR): Boolean; bei deinem Problem etwas, nur eben die ProcessID mit der entsprechenden ersetzt. Wichtig ist SE_DEBUG_NAME für den entsprechenden Prozess zu setzen.
Power is nothing without TControl
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr.
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