EWX_REBOOT

Discussion in 'WASM.BEGINNERS' started by Phobos, Nov 17, 2005.

  1. Phobos

    Phobos New Member

    Blog Posts:
    0
    Почему функция невыполняется?

    .386

    .model flat, stdcall

    option casemap:none



    includelib \masm32\lib\kernel32.lib

    includelib \masm32\lib\advapi32.lib

    includelib \masm32\lib\user32.lib



    include \masm32\include\kernel32.inc

    include \masm32\include\user32.inc

    include \masm32\include\windows.inc



    .data

    .code

    start:

    invoke ExitWindowsEx,EWX_REBOOT,0

    ret

    end start
     
  2. cresta

    cresta Active Member

    Blog Posts:
    0
    Если под NT, сначала нужно соответствующие привилегии получить (AdjustTokenPrivileges)
     
  3. Phobos

    Phobos New Member

    Blog Posts:
    0
    Под XP нужно.А можно сабж?И ещё вопрос как искать фалы по разширению(*.exe, *.JPEG...)?
     
  4. cresta

    cresta Active Member

    Blog Posts:
    0
    Code (Text):
    1. EnablePrivilege proc
    2.     local hToken : HANDLE
    3.     local tkp    : TOKEN_PRIVILEGES
    4. .data
    5.     SERESTORENAME db  "SeShutdownPrivilege",0
    6. .code
    7.  
    8.     invoke GetCurrentProcess
    9.     mov ecx,eax
    10.     invoke OpenProcessToken, ecx, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, addr hToken
    11.     .if eax != 0
    12.       invoke LookupPrivilegeValue, 0, ADDR SERESTORENAME, addr tkp.Privileges.Luid
    13.       .if eax != 0
    14.         mov tkp.PrivilegeCount,1
    15.         mov tkp.Privileges.Attributes,SE_PRIVILEGE_ENABLED
    16.         invoke AdjustTokenPrivileges, hToken, 0, addr tkp, 0, 0, 0
    17.         .if eax != 0
    18.           invoke GetLastError
    19.           .if eax == ERROR_SUCCESS
    20.             mov eax,1
    21.           .else
    22.             xor eax,eax
    23.           .endif
    24.         .endif
    25.       .endif
    26.       push eax
    27.       invoke CloseHandle, hToken
    28.       pop eax
    29.     .endif
    30.  
    31.     ret
    32. EnablePrivilege endp
     
  5. Phobos

    Phobos New Member

    Blog Posts:
    0
    А как это встроить в мой код а то я пытался ошибки полетели которые я невстричал?
     
  6. cresta

    cresta Active Member

    Blog Posts:
    0
    advapi32.inc и advapi32.lib указал?
     
  7. Phobos

    Phobos New Member

    Blog Posts:
    0
    Всёравно невыполняет перезагрузку что делать вот код!

    [​IMG] 366351007__ppc.asm
     
  8. cresta

    cresta Active Member

    Blog Posts:
    0
    Вообще-то ExitWindowsEx никто не отменял.

    Сначала вызываешь процедуру получения привилегий, затем ExitWindowsEx


    Code (Text):
    1. ;...тут программа что-то делала
    2. ;... теперь надо перезагрузиться
    3. ;получаем привилегии
    4. call EnablePrivilege
    5. .if (eax!=0)    ;если привилегии получены - перезагружаем
    6.     invoke ExitWindowsEx,EWX_REBOOT,0
    7. .endif
     
  9. Phobos

    Phobos New Member

    Blog Posts:
    0
    Усёравно некатит=)я знаю я надоедливвый.получается такая вещь ошибок нету а когда открывая *.exe он да выполяет все первые функции но не перезагрузку и ещё такой глюк засел в памяти и жрё её с лихой силой и тот *.exe который появился в windos не 32 разрядной программой стал виндовс так говарит=)



    [​IMG] _1584937205__ppc.asm
     
  10. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Phobos

    Не надоело гадости писать?
     
  11. cresta

    cresta Active Member

    Blog Posts:
    0
    Было бы странно, если бы это работало. У тебя каша, а не код. Где завершение программы по ExitProcess? Потому и висит в памяти. Куда дел ret в EnablePrivileges? Проверяешь возвращаемое значение от CreateFile, а на результаты проверки не реагируешь. Зачем было тогда проверять?

    Разбей код на отдельные логически обособленные части, и вызывай поочередно эти части. Примерно как в аттаче.

    В общем, файл ppc создаёт, комп перегружает. К счастью ключ в реестре не создает, а то перегружал бы непрерывно. Почему не создает - разбирайся. Читай msdn на предмет ф-ций, работающих с реестром.



    [​IMG] 1607295153__vir.asm
     
  12. cresta

    cresta Active Member

    Blog Posts:
    0
    А вообще, прав IceStudent - дело это дурное и никчёмное. Лучше напиши какую-нибудь полезную прогу. Пусть простенькую, но нормально оформленную.

    Напишешь несколько таких прог - и про вирусы вспоминать не будешь.
     
  13. Phobos

    Phobos New Member

    Blog Posts:
    0
    Пасибо за ответ=)галоси ну может быть просто я думаю что с этим повышу свой опыт.
     
  14. Phobos

    Phobos New Member

    Blog Posts:
    0
    Вот только последний вопрос почему не запускается с виндой???я попробовал просто открыть его в WINDOWS он всёравно пишет типо это не win32 application в чём тут проблемма?
     
  15. cresta

    cresta Active Member

    Blog Posts:
    0
    Не запускается, потому что ключ не создает в реестре.

    А то, что не win32 - смотри свои опции компилятора, что за файл компилируешь
     
  16. Phobos

    Phobos New Member

    Blog Posts:
    0
    У меня установлен MASM32 8.х я им пользуюсь через RAdAsm где находятся эти настройки которые отвечают за эту ошибку?а лазел лазел и ничего ненашол.
     
  17. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Project -> Options.



    Как можно что-то писать на асме, если не знать, что делаешь..