EWX_REBOOT

Тема в разделе "WASM.BEGINNERS", создана пользователем Phobos, 17 ноя 2005.

  1. Phobos

    Phobos New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    14
    Адрес:
    Estonia
    Почему функция невыполняется?

    .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

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Если под NT, сначала нужно соответствующие привилегии получить (AdjustTokenPrivileges)
     
  3. Phobos

    Phobos New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    14
    Адрес:
    Estonia
    Под XP нужно.А можно сабж?И ещё вопрос как искать фалы по разширению(*.exe, *.JPEG...)?
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Код (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

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    14
    Адрес:
    Estonia
    А как это встроить в мой код а то я пытался ошибки полетели которые я невстричал?
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    advapi32.inc и advapi32.lib указал?
     
  7. Phobos

    Phobos New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    14
    Адрес:
    Estonia
    Всёравно невыполняет перезагрузку что делать вот код!

    [​IMG] 366351007__ppc.asm
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Вообще-то ExitWindowsEx никто не отменял.

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


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

    Phobos New Member

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



    [​IMG] _1584937205__ppc.asm
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Phobos

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

    cresta Active Member

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

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

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



    [​IMG] 1607295153__vir.asm
     
  12. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    А вообще, прав IceStudent - дело это дурное и никчёмное. Лучше напиши какую-нибудь полезную прогу. Пусть простенькую, но нормально оформленную.

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

    Phobos New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    14
    Адрес:
    Estonia
    Пасибо за ответ=)галоси ну может быть просто я думаю что с этим повышу свой опыт.
     
  14. Phobos

    Phobos New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    14
    Адрес:
    Estonia
    Вот только последний вопрос почему не запускается с виндой???я попробовал просто открыть его в WINDOWS он всёравно пишет типо это не win32 application в чём тут проблемма?
     
  15. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Не запускается, потому что ключ не создает в реестре.

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

    Phobos New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    14
    Адрес:
    Estonia
    У меня установлен MASM32 8.х я им пользуюсь через RAdAsm где находятся эти настройки которые отвечают за эту ошибку?а лазел лазел и ничего ненашол.
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Project -> Options.



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