подмена сервиса

Тема в разделе "WASM.BEGINNERS", создана пользователем MaxOn, 9 фев 2009.

  1. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    Здраствуйте! у меня такой вопрос: вот мы подменили *.exe какого нибудь win сервиса как его перезапустить?
    Я юзаю функции ControlService() StartService(). Не получается. Если кто знает покажите пример.
     
  2. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Пример надо показать на столько же содержательный, насколько описание проблемы?)
    Как именно не получается?
     
  3. OFFSIDE

    OFFSIDE New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    106
    выкл

    Код (Text):
    1.                 invoke lstrcmp,addr Result,CTXT("serv stop")
    2.                 .if eax == 0
    3.                     invoke SetLastError,0
    4.                     invoke OpenSCManager,0,0,SC_MANAGER_ALL_ACCESS
    5.                     mov hSCManager,eax
    6.                     invoke OpenService,hSCManager,addr ServName,SERVICE_ALL_ACCESS
    7.                     mov SHandle,eax
    8.                     invoke ControlService,SHandle,SERVICE_CONTROL_STOP,addr eRR
    9.                     invoke SetLastError,0
    10.                     invoke CloseServiceHandle,SHandle
    11.                     ret
    вкл

    Код (Text):
    1.                 invoke lstrcmp,addr Result,CTXT("serv start")
    2.                 .if eax == 0
    3.                     invoke SetLastError,0
    4.                     invoke OpenSCManager,0,0,SC_MANAGER_ALL_ACCESS
    5.                     mov hSCManager,eax
    6.                     invoke OpenService,hSCManager,addr ServName,SERVICE_ALL_ACCESS
    7.                     mov SHandle,eax
    8.                     invoke ControlService,SHandle,SERVICE_CONTROL_START,addr eRR
    9.                     invoke SetLastError,0
    10.                     invoke CloseServiceHandle,SHandle
    11.                     ret
     
  4. OFFSIDE

    OFFSIDE New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    106
    и еще....
    Код (Text):
    1.     .ELSEIF uMsg == WM_COMMAND
    2.         mov eax,wParam
    3.         .IF lParam != 0
    4.             .IF ax == button2ID
    5.                 shr eax,16
    6.                 .IF ax == BN_CLICKED
    7.                     invoke RtlZeroMemory,addr buffer1,512
    8.                     invoke SetLastError,0
    9.                     invoke OpenSCManager,0,0,SC_MANAGER_ALL_ACCESS
    10.                     mov hSCManager,eax
    11.                     invoke SendMessage,hwndcombobox1,WM_GETTEXT,255,addr Combo
    12.                     invoke SendMessage,hwndedit1,WM_GETTEXT,4,addr edit
    13.                     .if byte ptr [Combo] == 55h
    14.                         invoke OpenService,hSCManager,addr ServName,SERVICE_ALL_ACCESS
    15.                         mov SHandle,eax
    16.                         invoke ControlService,SHandle,SERVICE_CONTROL_STOP,addr eRR
    17.                     invoke SetLastError,0
    18.                         invoke CloseServiceHandle,SHandle
    19.                         invoke OpenService,hSCManager,addr ServName,SERVICE_ALL_ACCESS
    20.                         mov SHandle,eax
    21.                         invoke DeleteService,SHandle
    22.                         invoke GetLastError
    23.                         .if eax != 0
    24.                             mov ecx,eax
    25.                             invoke FormatMessage,FORMAT_MESSAGE_FROM_SYSTEM ,0,ecx,0,addr buffer1,255,0
    26.                             invoke MessageBox,hWnd,addr buffer1,CTXT("0"),MB_OK
    27.                         .endif
    28.                         invoke CloseServiceHandle,SHandle
    29.                     .elseif byte ptr [Combo] == 49h
    30.                         invoke CreateService,hSCManager,addr ServName,addr ServName,\
    31.                         SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS,\
    32.                         SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,\
    33.                         CommandLine,0,0,0,0,0
    34.                         mov SHandle,eax
    35.                     invoke SetLastError,0
    36.                         mov    Action0.aType, SC_ACTION_RESTART
    37.                         mov    Action0.Delay, 0h
    38.                         mov    Action1.aType, SC_ACTION_RESTART
    39.                         mov    Action1.Delay, 0h
    40.                         mov    Action2.aType, SC_ACTION_RESTART
    41.                         mov    Action2.Delay, 0h
    42.                         mov    lpInfo1.dwResetPeriod, 0h        
    43.                         mov    lpInfo1.lpRebootMsg, 0                      
    44.                         mov    lpInfo1.lpCommand, 0
    45.                         mov    lpInfo1.cActions, 3
    46.                         lea    eax, Action0
    47.                         mov    lpInfo1.lpsaActions, eax
    48.                         invoke ChangeServiceConfig2, SHandle, 2, addr lpInfo1
    49.                         invoke GetLastError
    50.                         .if eax != 0
    51.                             mov ecx,eax
    52.                             invoke FormatMessage,FORMAT_MESSAGE_FROM_SYSTEM ,0,ecx,0,addr buffer1,255,0
    53.                             invoke MessageBox,hWnd,addr buffer1,CTXT("1"),MB_OK
    54.                         .endif
    55.                         invoke CloseServiceHandle,SHandle
    56.                         invoke OpenService,hSCManager,addr ServName,SERVICE_ALL_ACCESS
    57.                         mov SHandle,eax
    58.                         invoke StartService,SHandle,0,NULL
    59.                         invoke GetLastError
    60.                         .if eax != 0
    61.                             mov ecx,eax
    62.                             invoke FormatMessage,FORMAT_MESSAGE_FROM_SYSTEM ,0,ecx,0,addr buffer1,255,0
    63.                             invoke MessageBox,hWnd,addr buffer1,CTXT("2"),MB_OK
    64.                         .endif
    65.                         invoke CloseServiceHandle,SHandle
    66.                     .endif
    67.                     invoke CloseServiceHandle, hSCManager
    68.                 .ENDIF
    69.         invoke SendMessage,hWnd,WM_DESTROY,0,0
    70.             .ENDIF
    71.         .ENDIF
    72.     .ELSE
    73.         invoke  DefWindowProc,hWnd,uMsg,wParam,lParam
    74.         ret
    75.     .ENDIF
    структуры.

    Код (Text):
    1.     SC_ACTION  struct
    2.         aType    dd ?
    3.         Delay    dd ?
    4.     SC_ACTION ends
    5.     SERVICE_FAILURE_ACTIONS struct
    6.         dwResetPeriod  dd ?
    7.         lpRebootMsg    dd ?
    8.         lpCommand      dd ?
    9.         cActions       dd ?
    10.         lpsaActions    dd ?
    11.     SERVICE_FAILURE_ACTIONS ends
    12.     SERVICE_DESCRIPTION  struct
    13.         lpDescription  dd ?
    14.     SERVICE_DESCRIPTION ends
    и еще хз не помню для чего

    SC_ACTION_NONE equ 0
    SC_ACTION_RESTART equ 1
    SC_ACTION_REBOOT equ 2
    SC_ACTION_RUN_COMMAND equ 3
     
  5. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    спасибо
     
  6. MaxOn

    MaxOn Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    45
    эм а чему равна константа SERVICE_CONTROL_START