ExitWindowsEx

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Beitragvon TRiPLEX » Mittwoch 31. März 2004, 20:48

Tjoa, ich hab da n Problem: ich bin noch ein echter ASM - Coding "Neuling"
und folgende Zeile funktioniert einfach nicht: "invoke ExitWindowsEx, 1, 0"!! :blink:
"invoke ExitWindowsEx, 0, 0" funktioniert, "invoke ExitWindowsEx, 1, 0" und
"invoke ExitWindowsEx, 2, 0" nicht!! :blink:
Was kann ich tun??
Benutzeravatar
TRiPLEX
Member
 
Beiträge: 16
Registriert: Mittwoch 31. März 2004, 20:42

Beitragvon CDW » Mittwoch 31. März 2004, 23:03

hm, wahrscheinlihc hast du XP/2000 und wunderst dich warum man nicht herunterfahren kann ;) ... das ist leider bei NT Systemen nicht so einfach,
wenn man die Doku durchliest, dann steht da dass der Process erstmal die Rechte dafür erringen muss...
ich habs vor ein paar Jahren mal gemacht (einen MS beispielcode von C nach asm übersetzt):
http://www.cdw.de.vu/Tutorial1.zip
das wichtigste ist:
Code: Alles auswählen
       LOCAL tkp:TOKEN_PRIVILEGES
       LOCAL hToken: HANDLE      
        call GetCurrentProcess  ;das bracuchen wir jetzt für NT/2000/XP
        mov dwCurrentProcess,eax;die Process ID
  
  lea eax,hToken              ;hToken adresse ins eax laden
  push eax                    ; argument auf Stack
  push 28h ; TOKEN_ADJUST_PRIVILEGES(0x0020) xor TOKEN_QUERY(0x008)=28 => siehe WINNT.h      
        push dwCurrentProcess           ; unsere ProcessID
        call OpenProcessToken                        
        
        lea eax,tkp.Privileges[0].Luid
        push eax
        push offset shutdown            ; wir wollen einen shutdown machen <=shutdown ist ein string "SeShutdownPrivilege"
        push 0
        call LookupPrivilegeValue       ;und wir kriegen die doch
                                ;wer es hier nicht so ganz durchblickt, sollte
                                ;in die winAPIdoku schauen...z.b MSDN
              
        
        mov tkp.PrivilegeCount,1  
        mov tkp.Privileges[0].Attributes,SE_PRIVILEGE_ENABLED;enable dies! (wenn der benutzer keine Berechtigung dazu hat
                                                                             ; wird trotzdem nix daraus!
        push 0
        push 0
        push 0
        lea eax,tkp
        push eax
        push 0;False
        push hToken
        
        call AdjustTokenPrivileges
      
        
        push 0;wird nicht beachtet, da noch reserviert
        push dwParam1; unseren Parameter
        call ExitWindowsEx                          
        

wobei ich inzwichen einen komplett anderen Programmierstil drauf habe, aber egal ;)
CDW
Alter Hase
 
Beiträge: 62
Registriert: Donnerstag 2. Oktober 2003, 17:17

Beitragvon TRiPLEX » Donnerstag 1. April 2004, 18:07

Joa, großes Danke an CDW!! :)
Das Problem ist behoben, s lag also doch an WinXP.
DANKE!!
Benutzeravatar
TRiPLEX
Member
 
Beiträge: 16
Registriert: Mittwoch 31. März 2004, 20:42


Zurück zu Assembler

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron