DriverEntryPoint

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

  1. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    Компилю драйвер через консоль DDK


    Код (Text):
    1. #include "ntddk.h"
    2.  
    3.  
    4. #pragma comment(linker,"/Entry:DriverEntry")
    5.  
    6. NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
    7.                       IN PUNICODE_STRING RegistryPath  )
    8. {
    9.        
    10.    
    11.     return STATUS_DEVICE_CONFIGURATION_ERROR;
    12. }
    В иде стартовой процедурой идет

    Код (Text):
    1.               public GsDriverEntry
    2. INIT:00014005 GsDriverEntry   proc near
    3. INIT:00014005                 mov     edi, edi
    4. INIT:00014007                 push    ebp
    5. INIT:00014008                 mov     ebp, esp
    6. INIT:0001400A                 mov     eax, __security_cookie
    7. INIT:0001400F                 test    eax, eax
    8. INIT:00014011                 mov     ecx, 0BB40h
    9. INIT:00014016                 jz      short loc_1401C
    10. INIT:00014018                 cmp     eax, ecx
    11. INIT:0001401A                 jnz     short loc_1403F
    12. INIT:0001401C
    13. INIT:0001401C loc_1401C:                              ; CODE XREF: GsDriverEntry+11j
    14. INIT:0001401C                 mov     edx, ds:KeTickCount
    15. INIT:00014022                 mov     eax, offset __security_cookie
    16. INIT:00014027                 shr     eax, 8
    17. INIT:0001402A                 xor     eax, [edx]
    18. INIT:0001402C                 and     eax, 0FFFFh
    19. INIT:00014031                 mov     __security_cookie, eax
    20. INIT:00014036                 jnz     short loc_1403F
    21. INIT:00014038                 mov     eax, ecx
    22. INIT:0001403A                 mov     __security_cookie, eax
    23. INIT:0001403F
    24. INIT:0001403F loc_1403F:                              ; CODE XREF: GsDriverEntry+15j
    25. INIT:0001403F                                         ; GsDriverEntry+31j
    26. INIT:0001403F                 not     eax
    27. INIT:00014041                 mov     __security_cookie_complement, eax
    28. INIT:00014046                 pop     ebp
    29. INIT:00014047                 jmp     DriverEntry
    30. INIT:00014047 GsDriverEntry   endp
    Как сделать DriverEntry стартовой?
     
  2. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    она и так стартовая (там jmp внизу а не call :P), просто компилер фигачит туда проверку на переполнение стека, отключается это командой BUFFER_OVERFLOW_CHECKS=0
    в файле sources
     
  3. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    rain
    Спасибо!
    тут фишка в том чтобы попасть в driverEntry сразу.