Энциклопедия Spyware Ms-Rem (Ms-Rem@yandex.ru) Хакер, номер #085, стр. 085-124-5 1) Драйвер клавиатуры принимает прерывание от нее и считывает информацию в свой буфер. 2) Процесс сервера подсистемы win32 (csrss.exe) посылает IRP драйверу клавиатуры с запросом на получение информации. 3) Драйвер клавиатуры возвращает IRP пакет с информацией, по пути пакет проходит цепочку установленных клавиатурных фильтров. 4) csrss.exe обрабатывает поступающую информацию и рассылает оконные сообщения по ожидающим их процессам через функции драйвера win32k.sys. 5) Процесс, получающий сообщения вызывает GetMessage. Эта функция передает управление в ядро, где вызывается NtUserGetMessage из win32k.sys через теневую таблицу системных сервисов (Shadow SDT). 6) Процесс передает сообщение функции TranslateMessage, которая может передать сообщение в ядро функции NtUserTranslateMessage, но для клавиатурных сообщений она этого не делает. 7) Сообщение передается клавиатурным хукам, если они установлены. 8) Процесс передает сообщение функции DispatchMessage, после чего оно отправляется в оконную процедуру. 9) После выполнения оконной процедуры сообщение возвращается обратно в ядро. Как видишь, путь информации о клавиатурном вводе достаточно сложен, и защитные программы не могут защитить тебя от перехвата информации на всем этом пути. Программы AntiKeylogger и PrivacyKeyboard могут защитить лишь участки 1, 3 и 7, следовательно, у хакера остается море возможностей написать кейлоггер, который обойдет эти защиты. К примеру, можно перехватить информацию на любой стадии ее обработки в ядре (путем модификации Shadow SDT или кода одной из функций), но пока в этом нет необходимости, так как можно обойтись перехватом user mode API функций. Как вариант, можно перехватить функцию TranslateMessage и получать все оконные сообщения так, как будто мы установили клавиатурный хук. |