自分のスキルを拡張するために私自身のキーロガー(私的/教育)を構築しようとしています。 私はフックとこのケースでは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);
しかし、int型のxの簡単な増加が起こらなかったので、それは、明らかにそうではありませんでした。
私はここで助けを求めるために来た。私の問題を解決するために何ができますか?
このxの増分はどこですか? –
[Raw Input](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645543.aspx) – theB
@EricBrownここに行きます:http://pastebin.com/pSQ3mSs1 – Flinzy