Объясните причину вызникновения ошибки при вызове StartService

Тема в разделе "WASM.BEGINNERS", создана пользователем Xerx, 8 апр 2007.

  1. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    nitrotoluol
    Я и не говорил, кто круче. Просто про реализацию загрузки Four-F прочитал не самый лестный отзыв. Вот и высказался.

    Мне кажется, что все дело в самом драйвере. Просто как ни кручу загрузку - результат один и тот же. Некорректно что-то я в драйвере обрабатываю. Он не вылетает, но толку от работы никакого.
     
  2. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Выложил текущий вариант загрузчика и драйвера (20Кб)
    http://xerxde.narod.ru/tinydriver.rar
     
  3. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Xerx
    Залей на www.rapidshare.com
    С народа неудобно грузить. Прямой ссылкой мне не дает скачать.
     
  4. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    http://rapidshare.com/files/25050541/TinyDriver.rar
    http://xerx.ifolder.ru/1623436
     
  5. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Все, я сам разобрался. Все работает. Всем спасибо!
    Тему считаю закрытой.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    придираетесь к словам, товарищ =\
     
  7. giIgi

    giIgi New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2008
    Сообщения:
    7
    У меня похожая проблема, ребят, взгляните, исходники кто разбирается, я сам не особо в режиме ядра...
    Исходники на fasm 1.67.27; Win XP sp3;

    Это установка и запуск, во время которого и возникает ошибка 2001 - "Выбран неверный драйвер. "
    Код (Text):
    1. format PE CONSOLE
    2. use32
    3. entry START
    4.  
    5. ;êîíñòàíòû
    6. STD_OUTPUT_HANDLE     equ -11
    7. SC_MANAGER_ALL_ACCESS equ 000F003Fh
    8. SERVICE_START         equ 10h
    9. DELETE                equ 10000h
    10. SERVICE_KERNEL_DRIVER equ 00000001h
    11. SERVICE_DEMAND_START  equ 00000003h
    12. SERVICE_ERROR_NORMAL  equ 00000001h
    13.  
    14.  
    15. section '.data' data readable writeable
    16.  
    17.   SERVICE_BASE_HANDLE dd 00h
    18.   SERVICE_HANDLE      dd 00h
    19.   align 4
    20.   SNAME               db "giIgi",0
    21.   align 4
    22.   NM                  db 'C:\sis\source\kernel_driver\d.sys',0 ; ïðàâèëüíûé ïóòü ê ñëóæáå
    23.   LENS                dd 00h
    24.   STD_HANDLE          dd 00h
    25.   BUF                 db 512 dup (0)
    26.   ERROR_MESSAGE       db "Error %u ",0
    27.  
    28.  
    29. section '.code' code readable executable
    30. ;-------
    31. ;
    32. ;---
    33. START:
    34.   .GET.STD.OUTPUT.HANDL:
    35.         ; îïåðåäåëèòü äåñêðèïòîð êîíñîëè âûâîäà
    36.         push    dword STD_OUTPUT_HANDLE
    37.         call    [GetStdHandle]
    38.         mov     [STD_HANDLE],eax
    39.  
    40.   .SCM.OPEN:
    41.         ; îòêðûòü áàçó ñëóæá
    42.         push    SC_MANAGER_ALL_ACCESS
    43.         push    dword 00h
    44.         push    dword 00h
    45.         call    [OpenSCManagerA]
    46.         cmp     eax,00h
    47.         jnz     .SERVISE.CREATE
    48.         call    ERROR
    49.         jmp     .EXIT
    50.  
    51.   .SERVISE.CREATE:
    52.         ; èäåíòèôèêàòîð ïîëó÷åí, ñîçäàåì ñåðâèñ
    53.         mov     [SERVICE_BASE_HANDLE],EAX
    54.         push    dword 00h
    55.         push    dword 00h
    56.         push    dword 00h
    57.         push    dword 00h
    58.         push    dword 00h
    59.         push    dword NM
    60.         push    dword SERVICE_ERROR_NORMAL
    61.         push    dword SERVICE_DEMAND_START
    62.         push    dword SERVICE_KERNEL_DRIVER
    63.         push    dword (SERVICE_START+DELETE)
    64.         push    dword SNAME
    65.         push    dword SNAME
    66.         push    dword [SERVICE_BASE_HANDLE]
    67.         call    [CreateServiceA]
    68.         ; if CreateService then eax = handle -> close servis and base
    69.         ; else error and
    70.         cmp     eax,00h
    71.         jnz     .SERVICE.CONTROL.START
    72.         call    ERROR
    73.         jmp     .SCM.CLOSE
    74.  
    75.   .SERVICE.CONTROL.START:
    76.         mov     [SERVICE_HANDLE],eax
    77.         push    dword 00h
    78.         push    dword 00h
    79.         push    dword [SERVICE_HANDLE]
    80.         call    [StartServiceA]
    81.         cmp     eax,00h
    82.         jnz     .SERVICE.CLOSE
    83.         call    ERROR ; service not run
    84.  
    85.   .SERVICE.CLOSE:
    86.         ; çàêðûòü ñåðâèñ
    87.         push    dword [SERVICE_HANDLE]
    88.         call    [CloseServiceHandle]
    89.  
    90.   .SCM.CLOSE:
    91.         ; çàêðûòü áàçó ñåðâèñîâ
    92.         push    dword [SERVICE_BASE_HANDLE]
    93.         call    [CloseServiceHandle]
    94.  
    95.   .EXIT:
    96.         ; âûõîä ïðîèñõîäèò ïî çàâåðøåíèþ âñåõ ñëóæá
    97.         push    dword 00h
    98.         call    [ExitProcess]
    99. ;---
    100. ; END START
    101. ;-------
    102.  
    103. ;-------
    104. ; ERROR
    105. ; receives: -
    106. ; returns:  -
    107. ; requires: -
    108. ;---
    109. ERROR:
    110.         ; îáðàáîòêà îøèáîê
    111.         call    [GetLastError]
    112.         push    eax
    113.         push    dword ERROR_MESSAGE
    114.         push    dword BUF
    115.         call    [wsprintfA]
    116.         add     esp,0Ch
    117.         mov     eax,BUF
    118.         mov     edi,01h
    119.         call    WRITE
    120. RET
    121. ;---
    122. ; END ERROR
    123. ;-------
    124.  
    125. ;-------
    126. ; write string
    127. ; receives: edi 1 or 0 -> +0DAh or nothing
    128. ;           eax string address
    129. ; returns:  -
    130. ; requires: -
    131. ;---
    132. WRITE:
    133.         ; ïîëó÷èòü äëèíó ïàðàìåòðà
    134.         push    eax
    135.         push    eax
    136.         call    [lstrlenA]
    137.         mov     esi,eax
    138.         pop     ebx
    139.         cmp     edi,1
    140.         jne     .NO.ENT
    141.         ; â êîíöå - ïåðåâîä ñòðîêè
    142.         mov     byte [EBX+ESI],0Dh
    143.         mov     byte [EBX+ESI+1],0Ah
    144.         mov     byte [EBX+ESI+2],00h
    145.         add     EAX,2
    146.   .NO.ENT:
    147.         ; âûâîä ñòðîêè
    148.         push    dword 00h
    149.         push    dword LENS
    150.         push    EAX
    151.         push    EBX
    152.         push    dword [STD_HANDLE]
    153.         call    [WriteConsoleA]
    154. RET
    155. ;---
    156. ;END WRITE
    157. ;-------
    158.  
    159.  
    160. section '.idata' import data readable writeable
    161.  
    162. include '%fasminc%/macro/import32.inc'
    163.  
    164.   library kernel32,'KERNEL32.DLL',\
    165.           user32,'USER32.DLL',\
    166.           advapi32,'ADVAPI32.DLL'
    167.  
    168.   include '%fasminc%/api/kernel32.inc'
    169.   include '%fasminc%/api/user32.inc'
    170.   include '%fasminc%/api/advapi32.inc'
    это собственно сам драйвер
    Код (Text):
    1. format PE NATIVE at 1000h
    2. ;use32
    3. entry START
    4.  
    5. STATUS_DEVICE_CONFIGURATION_ERROR equ 00C0000182h
    6.  
    7. section '.code' code readable executable
    8. ;-------
    9. ; receives: dword [ebp+0Ch] - driver object
    10. ;           dword [ebp+08h] - unicode string
    11. ; returns:
    12. ; requires:
    13. ;---
    14. START:
    15.         push    ebp
    16.         mov     ebp,esp
    17.         push    ebx
    18.         push    esi
    19.         push    edi
    20.         ;-------
    21.   .MAIN:
    22.         ;здесь код
    23.  
    24.         mov     eax,STATUS_DEVICE_CONFIGURATION_ERROR
    25.         ;-------
    26.         pop     edi
    27.         pop     esi
    28.         pop     ebx
    29.         RET     8
    30. ;---
    31. ; END START
    32. ;-------
    Заранее благодарен