Я нахожусь в контексте какого-либо процесса в кернеле (допустим перехватил АПИшку). Как определить является ли сей процесс дебаггером или нет (дебажит ли он какой-то иной процесс в данный момент или нет)?
Могу наврврать, но насколько я понимаю, DebugObject не ассоциирован с конкретным процессом, ну т.е. если открыть его в разных процессах -- все будут с ним исправно работать, ему даже имя дать можно, только нельзя по имени открыть), поэтому единственное, что можно -- перечислить все процессы, просмотреть для них все DebugPort хэндлы, получить по ним все DebugObject объекты и для конкретного процесса перечислить все открытые хэндлы и проверить, не является ли какой-нибудь из них хэндлом одного из дебаг объектов. Кроме того в юзермоде есть функция, которая вытаскивает из теба этот хэндл -- DbgUiGetDebugObject, возможно этого будет достаточно, хотя этого хэндла там может и не быть, даже если мы кого-то отлаживаем, он там только для нужд DbgUi* слоя. Поправьте кто, плиз, если не прав.
Посмотри, была классная статья на тему того, как работают Debug API Windows и как они основаны на Native API, кажется, Руссиновича. Там и поймешь как определить, отлаживает ли текущий процесс кого-нибудь через дебаг апт или нет