вход/выход из ядра

Тема в разделе "WASM.NT.KERNEL", создана пользователем XshStasX, 10 окт 2010.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Вход в ядро из юзер мода осуществляется через
    int 2e или sysenter а выход как тогда осуществляется?
     
  2. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    iretd и sysexit соответственно.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1.         public  _KiSystemCallExitBranch
    2.         public  _KiSystemCallExit
    3.         public  _KiSystemCallExit2
    4.         public  _KiSystemCallExit3
    5.  
    6. ; NoRestoreVolatiles is only used for return from System Service.
    7. ; If returning to Kernel mode, the processor state does not need
    8. ; to be altered (CS, CPL stays the same etc), so simply unwind the
    9. ; kernel frame and branch to the saved EIP.
    10.  
    11.         test    dword ptr [esp+4], MODE_MASK
    12.  
    13. ; If the following branch is taken, we are returning to usermode.
    14. ; If this processor supports the SYSEXIT instruction, the branch
    15. ; will be adjusted at boot time to use the appropriate code sequence.
    16.  
    17. _KiSystemCallExitBranch:
    18.         jnz     short _KiSystemCallExit
    19.  
    20.         ; Exit to kernel mode from system call, faster than IRETD,
    21.         ; unwind the frame and branch to return address.
    22.  
    23.         pop     edx                 ; get eip
    24.         pop     ecx                 ; remove CS from stack
    25.         popfd                       ; restore eflags
    26.         jmp     edx
    27.  
    28.  
    29. _KiSystemCallExit:
    30.  
    31.         iretd                       ; return
    32.  
    33. _KiSystemCallExit2:
    34.  
    35.         test    dword ptr [esp+8], EFLAGS_TF
    36.         jne     short _KiSystemCallExit
    37.  
    38.         pop     edx                 ; pop EIP
    39.         add     esp, 4              ; Remove CS
    40.         and     dword ptr [esp], NOT EFLAGS_INTERRUPT_MASK ; Disable interrupts in the flags
    41.         popfd
    42.         pop     ecx                 ; pop ESP
    43.  
    44.         sti                         ; sysexit does not reload flags
    45.  
    46.         iSYSEXIT
     
  4. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Верно ли утверждение, что функция scanf() для ввода использует системный сервис ядра ZwRequestWaitReplyPort?
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    scanf -> vscanf -> _input_l -> _inc -> _getche_nolock -> _getch_nolock -> ReadConsoleInput -> CsrClientCallServer -> NtRequestWaitReplyPort
     
  6. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    исходники CRT что религия не позволяет посмотреть?