flat assembler
Message board for the users of flat assembler.

Index > Windows > can't shutdown

Author
Thread Post new topic Reply to topic
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
I have one hung up process EmuPMixDSP.exe (EMU 0404 audio device) than i try shutdown.exe -r -f -t 00
Evil process EmuPMixDSP.exe are impossible to be killed promptly anyway!
Noncens! Shocked
But taskmgr > restart has work normaly!
And GUI Start > Reboot work normaly!
What is differ? Why the GUI working?

That trouble is new for me, i've making some unknown tweaks ago...
What happens i don't know... maybe a services?

My good friend make some code
Code:
include '%fasm%\win32ax.inc'

struct LUID
        LowPart dd ?
        HighPart dd ?
ends

struct LUID_AND_ATTRIBUTES
        Luid LUID
        Attributes dd ?
ends

struct TOKEN_PRIVILEGES
        PrivilegeCount  dd ?
        Privilege1 LUID_AND_ATTRIBUTES
ends

TOKEN_ADJUST_PRIVILEGES            = 0x20
TOKEN_QUERY                        = 0x08

SE_PRIVILEGE_ENABLED               = 0x02

EWX_SHUTDOWN                       = 0x01
EWX_FORCE                          = 0x04
SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000
SHTDN_REASON_MINOR_UPGRADE         = 0x00000003
SHTDN_REASON_FLAG_PLANNED          = 0x80000000


.data

tkp TOKEN_PRIVILEGES
hToken dd ?

.code
start:
        invoke GetCurrentProcess
        invoke OpenProcessToken, \
               eax, \
               TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, \
               hToken

        or al, al
        jz .error1

        invoke LookupPrivilegeValue, \
               NULL, \
               "SeShutdownPrivilege", \
               tkp.Privilege1.Luid

        mov [tkp.PrivilegeCount], 1
        mov [tkp.Privilege1.Attributes], SE_PRIVILEGE_ENABLED

        invoke AdjustTokenPrivileges, \
               [hToken], \
               FALSE, \
               tkp, \
               0, \
               NULL, \
               0

        invoke GetLastError
        or eax, eax
        jnz .error2

        invoke MessageBox, 0, "Really shut down?", "Shut down", MB_ICONQUESTION or MB_YESNO
        cmp eax, IDNO

        jz .cancel

        invoke ExitWindowsEx, \
               EWX_SHUTDOWN or EWX_FORCE, \
               SHTDN_REASON_MAJOR_OPERATINGSYSTEM or \
                  SHTDN_REASON_MINOR_UPGRADE or \
                  SHTDN_REASON_FLAG_PLANNED

        or al, al
        jz .error3

        ret

.cancel:
        pushd "Cancelled"
        mov eax, [esp]
        jmp .general_error

.error1:
        pushd "OpenProcessToken failed"
        mov eax, [esp]
        jmp .general_error

.error2:
        pushd "AdjustTokenPrivileges failed"
        mov eax, [esp]
        jmp .general_error

.error3:
        pushd "ExitWindowsEx failed"
        mov eax, [esp]
        jmp .general_error

.general_error:
        invoke MessageBox, 0, eax, "Cannot shut down", MB_ICONHAND
        invoke ExitProcess, 0

.end start
    


stupid EmuPMixDSP.exe hungup again!
is it possible to modify this code to force-force-force! ...down
?
Confused

_________________
Memory=8388608
Post 20 Jul 2009, 01:15
View user's profile Send private message ICQ Number Reply with quote
tester3000



Joined: 16 Feb 2007
Posts: 17
tester3000
Use Native API

ZwShutdownSystem
Post 24 Jul 2009, 12:01
View user's profile Send private message Reply with quote
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
maybe an one exapmle...
Cool
i need a little binary ZwReboot.exe, please examply?

invoke ZwShutdownSystem
...
import ntdll.dll
? Smile

_________________
Memory=8388608
Post 25 Jul 2009, 21:17
View user's profile Send private message ICQ Number Reply with quote
tester3000



Joined: 16 Feb 2007
Posts: 17
tester3000
Code:
format PE GUI 4.0
entry start

include 'win32a.inc'

section '.data' data readable writeable

TOKEN_ADJUST_PRIVILEGES = 20h
TOKEN_QUERY             = 8h
SE_PRIVILEGE_ENABLED    = 2h

struct LUID
  lowPart  dd ?
  HighPart dd ?
ends
 
struct LUID_AND_ATTRIBUTES
  pLuid       LUID
  Attributes  dd ?
ends
 
struct _TOKEN_PRIVILEGES
  PrivilegeCount   dd ?
  Privileges       LUID_AND_ATTRIBUTES
ends
 
TTokenHd dd ?
 
udtLUID  LUID
tkp     _TOKEN_PRIVILEGES
 
SE_SHUTDOWN_NAME db 'SeShutdownPrivilege',0
pModule          db 'ntdll.dll',0
lpProcName       db 'NtShutdownSystem',0

section '.code' code readable executable

start:
 
    invoke    GetCurrentProcess
    invoke    OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,TTokenHd
    or        eax,eax
    jz        exit
 

    invoke    LookupPrivilegeValue, NULL, SE_SHUTDOWN_NAME, udtLUID
    or        eax,eax
    jz        exit

    mov       [tkp.PrivilegeCount],1
    mov       [tkp.Privileges.Attributes],SE_PRIVILEGE_ENABLED
    mov       eax,[udtLUID.lowPart]
    mov       [tkp.Privileges.pLuid.lowPart],eax
    mov       eax,[udtLUID.HighPart]
    mov       [tkp.Privileges.pLuid.HighPart],eax
    invoke    AdjustTokenPrivileges,[TTokenHd],0,tkp,0,0,0

    invoke GetModuleHandle,pModule
    invoke GetProcAddress,eax,lpProcName

    push 0
    call eax

 exit:
    invoke    ExitProcess,0

section '.idata' import data readable writeable

  library kernel32,'KERNEL32.DLL',\
          advapi32,'ADVAPI32.DLL',\
          user32,'USER32.DLL'

  include 'api\kernel32.inc'
  include 'api\advapi32.inc'
  include 'api\user32.inc'    


Еще можешь глянуть тут http://rootkits.su/viewtopic.php?id=616
Post 26 Jul 2009, 17:01
View user's profile Send private message Reply with quote
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
tester3000 wrote:
Еще можешь глянуть тут http://roo

Spasibo bolshuschee!!! Very Happy

_________________
Memory=8388608
Post 27 Jul 2009, 02:10
View user's profile Send private message ICQ Number Reply with quote
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
Incredible! I have not even hope, but it's best work! Cheers!
hmm.. How to restart?

please, only one more? Embarassed

i'm shocked to reboot code has 90% privilegies manipulations - paranoidal security of system win32 Cool
Post 27 Jul 2009, 02:26
View user's profile Send private message ICQ Number Reply with quote
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
push 1 ; reboot Razz
Post 27 Jul 2009, 02:53
View user's profile Send private message ICQ Number Reply with quote
tester3000



Joined: 16 Feb 2007
Posts: 17
tester3000
Кстати я узнал про эту native api отлаживая прогу в ольке так что если нет готового кода попробуй дизасмить чужой софт
Post 27 Jul 2009, 13:01
View user's profile Send private message Reply with quote
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
tester3000, а задержку там нельзя устроить? Всё работает, но чисто если говорить об ощущениях, чисто, то впечатление как от бсод, как будто сразу сваливается! Smile
Простой шатдаун даже при времени -t 0 как-то приостанавливался, как бы. Просто я о том думаю, не будет ли креш зависших приложений, хотя понятно что надо самому закрывать всё перед выходом, но тем не менее бэкграунд всякие сервисы, они не полетят
от такого быстрого ребута? Всмысле я думаю, в чём вообще отличия от кнопки Меню Пуск> Перезагрузка? Или там примерно такой же код?
Ещё раз спасибо! А насчёт перезагрузки, правильно что я в пуш 1 положил, или как-то можно лучше зделать было??

Кстати, я по той ссылке код тоже масмом скампилил, хотя масм это вообще
рутина такая, пришлось даже погуглить, начёт комманд строки, такой же дремучий как тасм, не завидую кто с ним дело имеет, зачем себя мучить,
когда фасм есть. Very Happy Одна установка батниками чего стоит! Хотя наверное какие-то прелести люди там тоже находят.
Post 27 Jul 2009, 15:51
View user's profile Send private message ICQ Number Reply with quote
tester3000



Joined: 16 Feb 2007
Posts: 17
tester3000
Из справочника по ZwShutdown Api:

User-mode applications and services are not informed of the shutdown (drivers of devices that have registered for shutdown notification by calling
IoRegisterShutdownNotification are informed).

Типо обычные программы и сервисы не получают сообщение о выключении а драйверы получают если только предварительно они зареганы вызовом IoRegisterShutdownNotification ну насчет драйверов я пока 0 так что могу ошибаться


Quote:
tester3000, а задержку там нельзя устроить?


Для этого обычные Api сгодятся Sleep или SetTimer

Quote:
А насчёт перезагрузки, правильно что я в пуш 1 положил, или как-то можно лучше зделать было??


Code:
push 0 - Shutdown
push 1 - Reboot    


Еще можно в спящий режим также но там др. Native api нужна NtInitiatePowerAction

Quote:
Меню Пуск> Перезагрузка? Или там примерно такой же код?


Нет там ExitWindowsEx или ExitWindows api используется:

Quote:

The ExitWindowsEx function returns as soon as it has initiated the shutdown. The shutdown or logoff then proceeds asynchronously.
During a shutdown or log-off operation, applications that are shut down are allowed a specific amount of time to respond to the shutdown request. If the time expires, Windows displays a dialog box that allows the user to forcibly shut down the application, to retry the shutdown, or to cancel the shutdown request. If the EWX_FORCE value is specified, Windows always forces applications to close and does not display the dialog box.


Т.е. процессу посылается сообщение о завершении если оно не ответило во время то появляется окошко типо завершить процесс или отменить думаю не раз такое видел. Если указан параметр EWX_FORCE то если процесс не ответил он насильно завершается без предупреждения

Quote:
Кстати, я по той ссылке код тоже масмом скампилил, хотя масм это вообще
рутина такая


Да masm кака мне на васме предлагали его бросить нафуй Laughing (http://wasm.ru/forum/viewtopic.php?id=33718)

п.с. надо заканчивать с рашеном а то по банану получим Very Happy
Post 27 Jul 2009, 16:50
View user's profile Send private message Reply with quote
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
FASM Forever! Very Happy
Post 27 Jul 2009, 19:38
View user's profile Send private message ICQ Number Reply with quote
semiono



Joined: 31 Aug 2007
Posts: 176
Location: section '.code' executable
semiono
released for end user: (C)
Smile
Code:
include '%fasm%\win32ax.inc'
entry start

section '.rsrc' resource data readable
        directory RT_ICON,icons,RT_GROUP_ICON,group_icons,RT_VERSION,versions

        resource icons,\
        1,LANG_NEUTRAL,icon_data1,\
        2,LANG_NEUTRAL,icon_data2,\
        3,LANG_NEUTRAL,icon_data3,\
        4,LANG_NEUTRAL,icon_data4
        resource group_icons,17,LANG_NEUTRAL,main_icon
        resource versions,1,LANG_NEUTRAL,version

        icon main_icon,\
        icon_data1,'%icons%\16x16.ico',\
        icon_data2,'%icons%\32x32.ico',\
        icon_data3,'%icons%\48x48.ico',\
        icon_data4,'%icons%\64x64.ico'

        versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_DEFAULT,0,\
                    'FileDescription','NtShutdown...',\      ; NtReboot...
                    'LegalCopyright','2001-2005 GmbH',\
                    'FileVersion','1.0.0.0',\
                    'ProductVersion','1.0.0.0',\
                    'OriginalFilename','NtShutdown.exe',\    ; NtReboot.exe
                    'Company','tester3000'

section '.idata' import data readable writeable
        library advapi32,'ADVAPI32.DLL',kernel32,'KERNEL32.DLL',user32,'USER32.DLL'
        include '%fasm%\api\kernel32.inc'
        include '%fasm%\api\advapi32.inc'
        include '%fasm%\api\user32.inc'

section '.data' data readable writeable executable

TOKEN_ADJUST_PRIVILEGES = 20h 
TOKEN_QUERY             = 8h 
SE_PRIVILEGE_ENABLED    = 2h 

struct LUID 
       lowPart  dd ?
       HighPart dd ?
ends 
  
struct LUID_AND_ATTRIBUTES 
       pLuid       LUID
       Attributes  dd ?
ends 
  
struct _TOKEN_PRIVILEGES 
       PrivilegeCount   dd ?
       Privileges       LUID_AND_ATTRIBUTES
ends 
  
TTokenHd dd ? 
  
udtLUID  LUID 
tkp     _TOKEN_PRIVILEGES 
  
SE_SHUTDOWN_NAME db 'SeShutdownPrivilege',0 
pModule          db 'ntdll.dll',0 
lpProcName       db 'NtShutdownSystem',0 

start: 
        invoke  Sleep,5000
        invoke  Beep

        invoke  GetCurrentProcess
        invoke  OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,TTokenHd
        or      eax,eax
        jz      exit
  
        invoke  LookupPrivilegeValue, NULL, SE_SHUTDOWN_NAME, udtLUID
        or      eax,eax
        jz      exit

        mov     [tkp.PrivilegeCount],1
        mov     [tkp.Privileges.Attributes],SE_PRIVILEGE_ENABLED
        mov     eax,[udtLUID.lowPart]
        mov     [tkp.Privileges.pLuid.lowPart],eax
        mov     eax,[udtLUID.HighPart]
        mov     [tkp.Privileges.pLuid.HighPart],eax
        invoke  AdjustTokenPrivileges,[TTokenHd],0,tkp,0,0,0

        invoke  GetModuleHandle,pModule
        invoke  GetProcAddress,eax,lpProcName

        push    0    ; push 1
        call    eax

exit:
        invoke  ExitProcess,0
    
Post 27 Jul 2009, 21:20
View user's profile Send private message ICQ Number Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.

Website powered by rwasa.