Codice keylogger

di il
5 risposte

Codice keylogger

Ciao a tutti mi sono appena iscritto, sto cercando di capire come funziona un keylogger scritto in c++ ma essendo ancora alle prime armi ho qualche problema in alcune parti del codice...

char i;
 while (1){
      for(i = 8; i <= 190; i++){
         if (GetAsyncKeyState(i) == -32767)
            Save (i,"LOG.txt");
      }
   }
Il while è fatto in modo che si ripeta all'infinito, il mio interesse cade sulla funzione GetAsyncKeyState(), cercando su internet ho visto che questa funzione ritorna un valore se un determinato tasto della tastiera è stato premuto o meno, se non erro il tasto dovrebbe essere passato come argomento della funzione. Non mi tornano un paio di cose:
1) Perchè i viene dichiarato char e non int?
2) Perche la funzione che si occupa di salvare i tasti premuti
viene chiamata a condizione che GetAsyncKeyState(i) sia
uguale a -32767 ? Non capisco questo -3276 da dove viene
fuori...
Il codice del keylogger funziona l'ho provato personalmente
Grazie in anticipo

5 Risposte

  • Re: Codice keylogger

    Uno che è alle prime armi non dovrebbe preoccuparsi di creare un keylogger, cmq quel codice è fatto male.
    GetAsyncKeyState accetta un int e non un char che è definito come unsigned short. Il valore di ritorno della funzione è 0 in caso di errore oppure se il tasto è stato premuto o meno. Se è stato premuto viene messo a 1 il bit + significativo del valore di ritorno. Questo valore essendo un short fa si che il valore sia negativo (per un short va da 0x8000 a 0x8000 ovvero da -32767 a 32767) ma il modo in cui è stato verificato lascia a desiderare. Il modo giusto per verificarlo è questo:
    
    if(GetAssyncKeyState(i) & 0x8000)
    
    Cmq i keylogger non sono per gente alle prime armi.
  • Re: Codice keylogger

    Hai ragione infatti non mi interessa crearlo vorrei solo capire il suo funzionamento.
    adesso mi chiedo, visto che l'argomento da passare a GetAssyncKeyState(i) è un intero,
    ogni tasto della tastiera dovrebbe corrispondere ad un intero, per sapere a che intero è associato ogni lettera della tastiera cosa devo fare?
  • Re: Codice keylogger

  • Re: Codice keylogger

    Grazie mille, quindi dovrei vedere a che numeri corrispondono quei valori esadecimali e fare un for che li scorre tutti e ogni volta li inserisce come argomento della funzione GetAssyncKeyState()
    e vede se sono stati digitati o meno
    
    while (1){
          for(int i = 8; i <= 190; i++){
             if(GetAssyncKeyState(i) & 0x8000)
                Save (i,"LOG.txt");
          }
       }
    
    e dopo di che nella funzione salva dovrei convertire (i) in esadecimale, vedere a che
    tasto corrisponde e salvarlo nel file di log che dovrebbe ogni volta essere aperto in appendice
    per evitare di sovrascrivere.
    Ho capito bene?
  • Re: Codice keylogger

    Hai capito male. I valori hex o int corrispondo perfettamente alla tabella ascii per la codifica dei caratteri. Fai un printf("%c",i) e lo vedi.
Devi accedere o registrarti per scrivere nel forum
5 risposte