Как определить (в кернеле) является ли процесс дебаггером?

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

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Я нахожусь в контексте какого-либо процесса в кернеле (допустим перехватил АПИшку). Как определить является ли сей процесс дебаггером или нет (дебажит ли он какой-то иной процесс в данный момент или нет)?
     
  2. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Могу наврврать, но насколько я понимаю, DebugObject не ассоциирован с конкретным процессом, ну т.е. если открыть его в разных процессах -- все будут с ним исправно работать, ему даже имя дать можно, только нельзя по имени открыть), поэтому единственное, что можно -- перечислить все процессы, просмотреть для них все DebugPort хэндлы, получить по ним все DebugObject объекты и для конкретного процесса перечислить все открытые хэндлы и проверить, не является ли какой-нибудь из них хэндлом одного из дебаг объектов. Кроме того в юзермоде есть функция, которая вытаскивает из теба этот хэндл -- DbgUiGetDebugObject, возможно этого будет достаточно, хотя этого хэндла там может и не быть, даже если мы кого-то отлаживаем, он там только для нужд DbgUi* слоя. Поправьте кто, плиз, если не прав.
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    проверь (TEB + 0F24h)
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Посмотри, была классная статья на тему того, как работают Debug API Windows и как они основаны на Native API, кажется, Руссиновича. Там и поймешь как определить, отлаживает ли текущий процесс кого-нибудь через дебаг апт или нет