-2

今日、私は単純なキーロガー アプリケーションを構築しています (いいえいいえ - あなたが考えていることではありません...)。私は GetAsyncKeyState を使用しています (SetWindowsHookEx を使用する必要があることはわかっていますが、これに関する優れたチュートリアルはあまりなく、WinApi を吸っています)、自動起動時にプログラムを開始する際に問題があります。私はそれを適切なレジストリに追加していますが、すべてが機能します (プログラムは起動時に開始します) が、GetAsyncKeyState はキーを読み取ることができません (手動で開始すると機能します)。短縮コード:

HWND Stealth;
if(!AllocConsole()){
    Sleep(1000*5); 
}
while((Stealth = FindWindowA("ConsoleWindowClass", NULL))==NULL){
    Sleep(1000*5);
}
//ShowWindow(Stealth,0);
char i;
while (keylogger->working){
    for(i = 8; i <= 190; i++){
        if (GetAsyncKeyState(i) == -32767){
                         cout << i << endl; // No output here

}}}

このような動作が存在する理由と、それを回避する方法は? Windowsの起動初期段階でコンソールを割り当てることと関係がありますか?

4

1 に答える 1

2

GetAsyncKeyState() は、呼び出しプロセスのキーボード状態でのみ機能します。他のプロセスでキーストロークをキャプチャすることが目的の場合は、代わりに SetWindowsHookEx() を使用する必要があり、フックを DLL として実装して、他のプロセスに挿入できるようにする必要があります。

于 2013-11-02T17:01:25.897 に答える