Как написать кейлоггер для Windows

Написать кейлоггер для Windows

Сегодня мы снова затронем тему написания кейлоггера для Windows, но и в оче­ред­ной раз опи­сывать пос­троч­но прин­цип работы кода на том же GetAsyncKeyState() мы не будем. Я прос­то дам ссыл­ки на наибо­лее удач­ные реали­зации и наибо­лее инте­рес­ные статьи на эту тему.

Еще по теме: Как написать кейлоггер на Go

Как написать кейлоггер для Windows

В начале рекомендую прочитать статью «Как написать кейлоггер на C#». Кроме этого, стоит заглянуть сюда. В статье опи­сан способ, создания кей­лог­гера, который кор­рек­тно логиру­ет любые кла­виши на любой кла­виату­ре (при­вет проб­лемам с кодиров­кой!).

А еще в Windows сущес­тву­ет фун­кция SetWindowsHookEx(), с ее помощью мож­но уста­новить хук. Хук поз­воля­ет перенап­равить поток управле­ния целевой прог­раммы в наш код. Если мы пос­тавим хук на WH_KEYBOARD, то смо­жем отсле­живать все нажатия кла­виш в сис­теме.

Вот код подоб­ного кей­лог­гера на GitHub. У прог­раммы прос­тень­кий GUI. Нажимаем на кноп­ку, и хук уста­нав­лива­ется, пос­ле чего через Message Box вас будут опо­вещать о нажатии на кла­вишу.

Об­ратите вни­мание, что Message Box будет воз­никать дваж­ды, даже ког­да кла­виша была нажата еди­нож­ды. Пер­вый раз — при опус­кании кла­виши (WM_KEYDOWN), а затем при под­нятии (WN_KEYUP).

Аль­тер­натив­ный вари­ант — исполь­зовать GetAsyncKeyState(). Этот механизм пыта­ется най­ти нажатую в текущий момент кла­вишу. Если фун­кция опре­дели­ла, что кла­виша нажата, кей­лог­гер зап­ротоко­лиру­ет это.

На GitHub есть и пол­ноцен­ная реали­зация.

Как вари­ант, мож­но логиро­вать нажатые кла­виши через ETW, но это сра­бота­ет толь­ко с вир­туаль­ной (экранной) кла­виату­рой. Тем не менее та­кой PoC тоже есть.

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз.

Добавить комментарий