Как из csrss получить ProcessHandle ?

Тема в разделе "WASM.WIN32", создана пользователем Flasher, 26 дек 2008.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Есть программа, которая ставит sdt хуки на ZwQuerySystemInformation\ZwOpenProcess, и таким способом скрывает свой процесс + запрет открытия этого процесса.

    Задача: - из юзермода открыть этот процесс не зная pid процесса.
    Есть догадки, что можно реализовать это через csrss. Знаю что там хранятся хендлы процессов.

    Собственно вопрос: - как выдернуть оттуда хендл процесса, зная только имя этого процесса?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Перечислить все хендлы в системе через ZwQuerySystemInformation (SystemHandleInformation)
     
  3. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
  4. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Great, и что искать ?
    Код (Text):
    1. SYSTEM_HANDLE_INFORMATION struct
    2. ProcessId           ULONG ?
    3. ObjectTypeNumber    UCHAR ?
    4. Flags           UCHAR ?
    5. Handle          USHORT ?
    6. Object          PVOID ?
    7. GrantedAccess       ACCESS_MASK ?
    8. SYSTEM_HANDLE_INFORMATION ends
    9. PSYSTEM_HANDLE_INFORMATION typedef PTR SYSTEM_HANDLE_INFORMATION
    Перечислить пока ProcessId = csrssPID и ObjectTypeNumber = OBJ_TYPE_PROCESS ?
     
  5. Twister

    Twister New Member

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

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Токо что тестил, вроди работает..

    Если выполняется условие:
    Делаю дубликат хендла, и вызываю ZwQueryInformationProcess по этому хендлу с инфоклассом = 27

    Спасибо Вам, господа :)
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Еще маленький вопросик..
    А как убрать или закрыть хендл оттуда?

    Код (Text):
    1. invoke ZwClose,SYSTEM_HANDLE_INFORMATION.Handle
    Непрокатило..
     
  8. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Этот хэндл не принадлежит твоему процессу, его надо скопировать с помошью ZwDuplicateObject с опцией DUPLICATE_CLOSE_SOURCE, соотвественно закроется оригинальный и останется только закрыть свою копию чтоб удалить обьект.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    blast
    Чтобы уменьшить счётчик ссылок на обьект (прим.)
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Clerk
    И счетчик хендлов (прим.) :)
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Great
    Само сабой .D