Процесс владелец handle

Тема в разделе "WASM.NT.KERNEL", создана пользователем katrus, 27 янв 2009.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Существует ли "интеллигентный" способ определить какой процесс является владельцем определенного handle? Или нужно нумеровать handles для всех процессов?
     
  2. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    А как ты получаешь хэндл?
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    По разному, например перехватываю ZwClose, нужно узнать какой процесс открыл handle переданный в качестве аргумента (естественно, если handle был окрыт процессом а не драйвером).
     
  4. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Не трудно догадаться, что ты в этот момент оказываешься в контексте именно того процесса, который и открыл хэндл.
     
  5. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Не всегда, например некий процесс открыл handle, а закрывается он, скажем драйверм process explorer. Или закрыть handle можно только в том же контексте?

    Кстати, являются ли handles уникальными для всей системы или только для процесса?
     
  6. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    katrus
    Ужос. Драйвера пишем?

    [add] Хендл уникален для процесса, ID уникален для системы.
     
  7. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Обычный хэндл уникален для процесса. Ядерный, соответсвенно, нет.
    ZwClose - да. Но можно и напрямую похимичить с таблицей хэндлов. Тогда нет.
     
  8. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Понятно, а как поступает ProcessExplorer? Переключается в контекст процесса и делает NtClose оттуда, или делает непосредственные модификации с таблицой handles процесса?
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    скорее всего:
    Код (Text):
    1. NtDuplicateObject(..., CLOSE_SOURCE);