Я пытаюсь создать собственный кейлоггер (частный/образовательный), чтобы расширить свои навыки. Я начал искать крючки и в этом случае KBDLLHOOKSTRUCT.Проблемы с подключением KBDLL
Я не уверен, что случилось с моим кодом, но он не работает. Что я делаю:
Создать функцию обратного вызова с nCode, wParam'а, и LPARAM плюс возвращение к CallNextHookEx.
Я установил функцию в рукоятке HHOOK с помощью SetWindowsHookEx и установил бесконечный цикл. Мой KBDLLHOOKSTRUCT установлен в * lParam, поскольку lParam - это указатель на KBDLLHOOKSTRUCT, содержащий информацию, которую я хочу, правильно?
Мой код:
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
HHOOK hookHandle;
KBDLLHOOKSTRUCT hookData;
LRESULT CALLBACK LowLevelKeyboardProc(int nC, WPARAM wP, LPARAM lP);
std::string readLogs();
void writeLogs(std::string logs);
int main()
{
hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, NULL, 0);
while(true) {
Sleep(1000);
}
return 0;
}
std::string readLogs() {
std::ifstream readFile;
readFile.open("logs.txt");
std::string logs;
readFile >> logs;
return logs;
}
void writeLogs(std::string logs) {
std::string oLogs = readLogs();
std::ofstream writeFile;
writeFile.open("logs.txt");
writeFile << oLogs + logs;
}
LRESULT CALLBACK LowLevelKeyboardProc(int nC, WPARAM wP, LPARAM lP) {
if (nC >= 0) {
if (wP == WM_KEYDOWN) {
hookData = *((KBDLLHOOKSTRUCT*)lP);
}
}
return CallNextHookEx(hookHandle, nC, wP, lP);
}
Просто игнорировать readLogs() и writeLogs().
Я думал, что проблема была с:
hookData = *((KBDLLHOOKSTRUCT*)lP);
Но это было не так, по-видимому, из-за простое приращение ИНТА й не произошло.
Таким образом, я пришел сюда, чтобы попросить о помощи. Что я могу сделать, чтобы исправить мою проблему?
Где этот предполагаемый приращение x? –
[Сырой вход] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645543.aspx) – theB
@ EricBrown Здесь вы найдете: http://pastebin.com/pSQ3mSs1 – Flinzy