старт сервиса.

Тема в разделе "WASM.BEGINNERS", создана пользователем arrhangel, 30 апр 2011.

  1. arrhangel

    arrhangel New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2010
    Сообщения:
    19
    Добрий день,
    помогите пожалуста, непонимаю почему я немогу запустить сервис:

    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6.  
    7. include \masm32\include\kernel32.inc
    8. include \masm32\include\user32.inc
    9. include \masm32\include\advapi32.inc
    10.  
    11. includelib \masm32\lib\kernel32.lib
    12. includelib \masm32\lib\user32.lib
    13. includelib \masm32\lib\advapi32.lib
    14.  
    15. include \masm32\Macros\Strings.mac
    16.  
    17.  
    18. .code
    19.  
    20. start proc
    21.  
    22. local hSCManager:HANDLE
    23. local hService:HANDLE
    24. local acDriverPath[MAX_PATH]:CHAR
    25.  
    26.  
    27.     invoke OpenSCManager, NULL, NULL, SC_MANAGER_CREATE_SERVICE
    28.     .if eax != NULL
    29.         mov hSCManager, eax
    30.  
    31.         push eax
    32.         invoke GetFullPathName, $CTA0("PS2Versuch1.sys"), sizeof acDriverPath, addr acDriverPath, esp
    33.         pop eax
    34.  
    35.         invoke CreateService, hSCManager, $CTA0("PS2Versuch1.sys"), $CTA0("Maus kapput"), \
    36.                 SC_MANAGER_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, \
    37.                 SERVICE_ERROR_IGNORE, addr acDriverPath, NULL, NULL, NULL, NULL, NULL
    38.  
    39.         .if eax != NULL
    40.             mov hService, eax
    41.             invoke StartService, hService, 0, NULL
    42.             invoke DeleteService, hService
    43.             invoke CloseServiceHandle, hService
    44.         .else
    45.             invoke MessageBox, NULL, $CTA0("Can't register driver."), NULL, MB_ICONSTOP
    46.         .endif
    47.         invoke CloseServiceHandle, hSCManager
    48.     .else
    49.         invoke MessageBox, NULL, $CTA0("Can't connect to Service Control Manager."), \
    50.                             NULL, MB_ICONSTOP
    51.     .endif
    52.  
    53.     invoke ExitProcess, 0
    54.  
    55. start endp
    56.  
    57. end start
    после вызова GetLastError , вадает ошибку 1073.
     
  2. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Сервис запускается как .exe, реже как .dll но не .sys.
     
  3. Babyshamble

    Babyshamble New Member

    Публикаций:
    0
    Регистрация:
    2 май 2010
    Сообщения:
    67
    Очнись, дрова это тоже сервисы. Ну, 1073, ты его уже инсталил.
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Удали старый сервис перед тем как устанавливать его снова. Это проще для отладки (когда требуется многократное изменение и перезапуск кода).
    Или пользуйся уже установленным сервисом не инсталлируя заново

    Код (Text):
    1.     mov     hService, eax
    2.     .if     (!eax)
    3.         invoke  GetLastError
    4.         .if     (eax==ERROR_SERVICE_EXISTS || eax==ERROR_DUPLICATE_SERVICE_NAME)
    5.             invoke  OpenService, hManager, addr szDisplayName, SERVICE_ALL_ACCESS
    6.             mov     hService, eax
    7.         .endif
    8.     .endif
     
  5. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Я писал сервис но возникли сложности с процедурой управления сервисом, поможите ? :)
    http://www.wasm.ru/forum/viewtopic.php?id=40432

    вот код на fasm для удаления сервиса, где то был еще 32-ух битный

    Код (Text):
    1. format PE64 GUI 5.0
    2. entry Main
    3.  
    4. include 'win64a.inc'
    5.  
    6. SC_MANAGER_ALL_ACCESS        =    0F003Fh
    7.  
    8. section '.data' data readable writeable
    9.  
    10.     szServiceName    db    'Test service',0
    11.  
    12.     schSCManager    dq    ?
    13.     svcSCManager    dq    ?
    14.  
    15.     scherror    db     'ошибка OpenSCManager().',0
    16.     svcerror    db     'ошибка OpenServiceA()',0
    17.     svcdelete    db     '*** сервис удалён.',0
    18.  
    19. section '.code' code readable executable
    20. proc Main
    21.  
    22.     invoke OpenSCManagerA,NULL,NULL,SC_MANAGER_ALL_ACCESS
    23.     cmp rax,0
    24.     je .scherror
    25.     mov [schSCManager],rax
    26.  
    27.     invoke OpenServiceA,[schSCManager],szServiceName,SC_MANAGER_ALL_ACCESS
    28.     cmp rax,0
    29.     je .svcerror
    30.     mov [svcSCManager],rax
    31.  
    32.     invoke DeleteService,[svcSCManager]
    33.  
    34.     invoke CloseServiceHandle,[schSCManager]
    35.     invoke CloseServiceHandle,[svcSCManager]
    36.  
    37.     invoke MessageBoxA,0,svcdelete,0,MB_ICONWARNING
    38.     jmp .exit
    39.  
    40. .svcerror:
    41.     invoke MessageBoxA,0,scherror,0,MB_ICONERROR
    42.     jmp .exit
    43.  
    44. .scherror:
    45.     invoke MessageBoxA,0,svcerror,0,MB_ICONERROR
    46.  
    47. .exit:
    48.     invoke ExitProcess,rax
    49. endp
    50.  
    51. section '.idata' import data readable
    52.  
    53.     library kernel,'KERNEL32.DLL',\
    54.         user,'USER32.DLL',\
    55.         advapi,'ADVAPI32.DLL'
    56.  
    57.     import advapi,\
    58.         OpenSCManagerA,'OpenSCManagerA',\
    59.         OpenServiceA,'OpenServiceA',\
    60.         DeleteService,'DeleteService',\
    61.         CloseServiceHandle,'CloseServiceHandle'
    62.  
    63.     import kernel,\
    64.            ExitProcess,'ExitProcess'
    65.  
    66.     import user,\
    67.            MessageBoxA,'MessageBoxA'
    вот на masm

    Код (Text):
    1. .686
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. includelib library\kernel32.lib
    6. includelib library\user32.lib
    7. includelib library\shell32.lib
    8. includelib library\Advapi32.lib
    9.  
    10. .data?
    11.     schSCManager dd ?
    12. .data
    13.     szServiceName db "szServiceName",0
    14.  
    15. .code
    16. start:
    17.  
    18.     OpenSCManagerA PROTO :DWORD,:DWORD,:DWORD
    19.     push 0F003Fh
    20.     push 0
    21.     push 0
    22.     call OpenSCManagerA
    23.  
    24.     mov schSCManager,eax
    25.  
    26.     OpenServiceA PROTO :DWORD,:DWORD,:DWORD
    27.     push 10000h
    28.     push offset szServiceName
    29.     push schSCManager
    30.  
    31.     DeleteService PROTO :DWORD
    32.     push eax
    33.     call DeleteService
    34.    
    35.     CloseServiceHandle PROTO :DWORD
    36.     push schSCManager
    37.     call CloseServiceHandle
    38.  
    39.     ExitProcess PROTO :DWORD
    40.     push eax
    41.     call ExitProcess
    42.  
    43. end start
     
  6. arrhangel

    arrhangel New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2010
    Сообщения:
    19
    не ожидал такую активность , спасибо большое!