ObOpenObjectByPointer

Тема в разделе "WASM.WIN32", создана пользователем sasha_s, 16 фев 2006.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Как правильно вызвать ObOpenObjectByPointer для получения хэндла по созданному в драйвере объекту тпа KEVENT? Сей хэндл надо дать процессу для использования в юзермоде. Я уже много чего перепробывал и либо BSOD, либо неудача.
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    А не проще будет сразу создавать евент с помощью ZwCreateEvent и по запросу приложения копировать ему хэндл через NtDuplicateObject.

    Затем можно получить указатель на евент и в ядре использовать его.
     
  3. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Это идея... Сча попробую.
     
  4. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Одно НО!

    Евент создается в драйвере и он необходим почти во всех процессах, т.к. я внедряю ДЛЛ-ку во все доступные процессы... Соответственно запросс на хэндл этого евента придет из разных процессов, которые работают под текущем аккаунтом и под SYSTEM.



    И соответственно не ясно что подставлять в параметры NtDuplicateObject, в частности в SourceProcessHandle что подставить?
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Если евент создан как ядерный хэндл (OBJ_KERNEL_HANDLE) то NtCurrentProcess. Если запрос приходит через IOCTL (а значит и в контексте запрашивающего процесса), то и TargetProcessHandle будет NtCurrentProcess