Разница между функциями ядра

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

  1. n2

    n2 New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2011
    Сообщения:
    26
    Добрый день, уважаемые. Есть следующие вопросы:
    1) Какая разница между NtTerminateProcess и NtOpenProcess? В плане безопасности моего процесса. Что правильнее перехватывать? Насколько я заметил, при перехвате ОпенПроцесс процесс невозможно ни снять, ни усыпить, а при перехвате ТерминейтПроцесс-можно усыпить, но нельзя снять (использую Process Explorer)?
    2) Почему при перехвате ОпенПроцесс я могу снять процесс командой taskkill /F /IM notepad.exe, а при перехвате Терминейт-нет?
    3) Как при перехвате функции NtTerminateProcess получить ПИД завершаемого процесса? Ибо если в функции ОпенПроцесс есть параметр IN PCLIENT_ID, то ф-я Terminate принимает лишь __in_opt HANDLE ProcessHandle и
    __in NTSTATUS ExitStatus. Как по хендлу узнать ПИД из нулевого кольца?
    4) И тупой вопрос:перехватывать нужно Zw или Nt функции? Повторюсь, драйвер режима ядра. Судя по инфе на сайте, нужны Нт..

    Спасибо.
     
  2. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    Int 2E/sysenter
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    лучше хукать и то и то. запрещать открытие с процесс_терминейт и запрещать закрытие по существующему хендлу.

    референсишь объект по хендлу, получаешь PEPROCESS.
    дальше PsGetProcessId

    Перехватывать нужно NtXxx.
    ZwXxx - это врапперы для вызова соответствующих сервисов через KiSystemService.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Deader
    перехватывать инт/сисентер не стоит)