См.
Поиск хуков По сравнению с другими операциями перечисление установленных
крючки довольно легко.
Хуки, специфичные для каждого потока, записываются в данных win32k для каждого потока.
структура помечена, довольно образно, как THREADINFO 1 . Это
по сути, ETHREAD / TEB, как структура, но с учетом
специально для пользователя и информации gdi. Один из его членов
(aphkStart) представляет собой массив из 16 элементов указателей, по отдельности они
либо укажите NULL, либо заголовок связного списка структур HOOK.
Перечисление крючков - это просто мера
цепи.
Для удобства и, вероятно, чтобы итерация не требовалась для просмотра
если установлены какие-либо хуки, THREADINFO содержит другого члена, fsHooks,
что битовое поле. Если бит включен, соответствующий индекс в
массив крюков действителен. Вместо 33 сравнений (16 для NULL и 17 для
for-loop), для указания наличия крючков требуется только один, отличный!
Глобальные хуки, которые на рабочий стол 2 , также хранятся в
структура каждого объекта, также образно названная (DESKTOPINFO), и
также хранится в массиве с сопутствующим битовым полем. Преодоление
два это pDeskInfo, член THREADINFO, который указывает на его владение
DESKTOPINFO.
Несмотря на интрижку во вступлении, работа со всеми этими
недокументированные структуры на самом деле не слишком сложны на практике.
Символы Windows 7 для win32k.sys включают их расположение, что приятно.
Символы для эпохи Vista / Server 2008, хотя, это не то, где
изучение собрания приходит и спасает день.
Знать, как эти структуры выглядят, это одно, понять их
это еще один ...
Получив наши грязные перчатки, мы находим запись структур HOOK
Большинство соответствующей информации сами:
Но я до сих пор не нашел надежного способа сделать это.