Deutsch
Forum

API ZwSetSystemInformation mit SYTEM_INFORMATION_CLASS Param

 
Moin...

Bei den Native-APIs ZwQuerySystemInformation und ZwSetSystemInformation gibt es den Parameter SYTEM_INFORMATION_CLASS. Setzt man diesen auf SystemGlobalFlag, kann man globale Systemflags auslesen oder setzen.
Hat jemand eine Ahnung, was diese einzelnen Flags genau bewirken?

Gruß

Andreas
 
06.10.2006  
 



Mmmh... ich hab den Eindruck, das sind Flags für Debugging.
Hier mal Quelltext:
KompilierenMarkierenSeparieren
Def @ZwQuerySystemInformation(4) !"NTDLL","ZwQuerySystemInformation"
Def @ZwSetSystemInformation(3) !"NTDLL","ZwSetSystemInformation"
DEF @LsaNtStatusToWinError(1) !"advapi32","LsaNtStatusToWinError"
DEF @FormatMessage(7) !"KERNEL32","FormatMessageA"
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
Declare AHRückgabe&,AHGETERROR_Buffer#,AHGETERROR_Buffer$
Declare Flags&,Fehler&,NT_FEhler&,Return&,LUID#,TOKEN_PRIVILEGES#
LET NT_Fehler&=@ZwQuerySystemInformation(9,@ADDR(Flags&),4,@ADDR(return&))
LET AHRückgabe&=@LsaNtStatusToWinError(NT_Fehler&)
Fehlercode_bestimmen
Addstring "Fehler bei ZwQuerySystemInformation: "+AHGETERROR_Buffer$
Addstring "Ausgelesene Flags: $"+@Hex$(Flags&)
Set_Privilege_Status "SeDebugPrivilege",$2
LET Flags&=$9
LET NT_Fehler&=@ZwSetSystemInformation(9,@ADDR(Flags&),4)
LET AHRückgabe&=@LsaNtStatusToWinError(NT_Fehler&)
Fehlercode_bestimmen
Addstring "Fehler bei ZwSetSystemInformation: "+AHGETERROR_Buffer$
LET NT_Fehler&=@ZwQuerySystemInformation(9,@ADDR(Flags&),4,@ADDR(return&))
LET AHRückgabe&=@LsaNtStatusToWinError(NT_Fehler&)
Fehlercode_bestimmen
Addstring "Fehler bei ZwQuerySystemInformation: "+AHGETERROR_Buffer$
Addstring "Ausgelesene Flags: $"+@Hex$(Flags&)
@Editbox("ZwQuerySystemInformation mit SystemGlobalFlag",1)

Proc Fehlercode_bestimmen

    DIM AHGETERROR_Buffer#,32000
    @FormatMessage($1000,0,AHRückgabe&,0,AHGETERROR_Buffer#,32000,0) Wandelt Fehlercode in Landesspezifische Message um.
    Let AHGETERROR_Buffer$=@trim$(@STRING$(AHGETERROR_Buffer#,0))
    Dispose AHGETERROR_Buffer#

Endproc

Proc Set_Privilege_Status

    Parameters Privilege_name$,Aktive&
    Declare NewState&,AH_Token_Handle&,LU_SYSTEM$
    DIM TOKEN_PRIVILEGES#,16
    DIM LUID#,8
    Clear LUID#,LU_SYSTEM$
    @LookupPrivilegeValue(@ADDR(LU_SYSTEM$),@ADDR(Privilege_name$),LUID#)
    CLEAR AH_Token_Handle&
    LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$20,@ADDR(AH_Token_Handle&))
    LONG TOKEN_PRIVILEGES#,0=1
    LET NewState&=TOKEN_PRIVILEGES#
    @CopyMemory(NewState&+4,LUID#,8)
    LET NewState&=Aktive&
    Clear Aktive&

    IF @or(NewState&,$2)=NewState&

        LET Aktive&=@or(AKTIVE&,$2)

    Endif

    IF @or(NewState&,$80000000)=NewState&

        LET Aktive&=@or(AKTIVE&,$80000000)

    Endif

    LONG TOKEN_PRIVILEGES#,12=Aktive&
    LET FEHLER&=@AdjustTokenPrivileges(AH_Token_Handle&,0,TOKEN_PRIVILEGES#,0,0,0)

    If AH_TOKEN_Handle&<>0

        @CLOSEHANDLE(AH_Token_Handle&)

    endif

    Dispose TOKEN_PRIVILEGES#
    Dispose LUID#

endproc


Und hier die Flags:
[quote:6a25c38565]
FLG_STOP_ON_EXCEPTION $1
FLG_SHOW_LDR_SNAPS $2
FLG_DEBUG_INITIAL_COMMAND $4
FLG_STOP_ON_HUNG_GUI 0x00000008
FLG_HEAP_ENABLE_TAIL_CHECK $10
FLG_HEAP_ENABLE_FREE_CHECK $20
FLG_HEAP_VALIDATE_PARAMETERS $40
FLG_HEAP_VALIDATE_ALL 0x00000080
FLG_POOL_ENABLE_TAIL_CHECK $100
FLG_POOL_ENABLE_FREE_CHECK $200
FLG_POOL_ENABLE_TAGGING $400
FLG_HEAP_ENABLE_TAGGING $800
FLG_USER_STACK_TRACE_DB $1000
FLG_KERNEL_STACK_TRACE_DB 0x00002000
FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
FLG_IGNORE_DEBUG_PRIV 0x00010000
FLG_ENABLE_CSRDEBUG 0x00020000
FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
FLG_DISABLE_PAGE_KERNEL_STACKS $80000
FLG_HEAP_ENABLE_CALL_TRACING $100000
FLG_HEAP_DISABLE_COALESCING $200000
FLG_ENABLE_CLOSE_EXCEPTIONS $400000
FLG_ENABLE_EXCEPTION_LOGGING $800000
FLG_ENABLE_DBGPRINT_BUFFERING $8000000
[/quote:6a25c38565]
Gruß

Andreas
 
08.10.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

781 Betrachtungen

Unbenanntvor 0 min.
H.Brill13.05.2021
rquindt09.07.2020
Manfred Barei21.01.2012
iF10.03.2011

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie