Página 1 de 1

Detectar tecla con HOOKS by linkgl

Publicado: 06 Ene 2011, 18:37
por linkgl

Código: Seleccionar todo

/***********************************
* Coder: Linkgl                    *
* Thanks: The swash                *
* Exaple for hooks WH_KEYBOARD_LL  *
* (LowLevel)                       *
***********************************/
#include <windows.h>
#include <stdio.h>
//declaramos el hook publico
HHOOK hHook;
 
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
   //llamamos a la estructura y la hacemos puntero para lParam
   KBDLLHOOKSTRUCT kbHookStruct = *(KBDLLHOOKSTRUCT*)lParam; 
   //PKDLLHOOKSTRUCT *kbHookStruct = (PKBDLLHOOKSTRUCT *)lParam;
   if(nCode < 0) //si es menor a 0 pasamos al siguiente hook
     return CallNextHookEx(0, nCode, wParam, lParam);
   if(wParam == WM_KEYDOWN) //Si se detecto pulsacion de tecla 
       printf("%s", (char *)&kbHookStruct.vkCode); //imprimimos convirtiendo a char *

   return CallNextHookEx(0, nCode, wParam, lParam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   MSG msg;
   //seteamos el hook
   hHook=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc,GetModuleHandle(NULL),0);
   //Bucle de mensajes que usamos en las winapi
   while(TRUE==GetMessage(&msg, NULL, 0, 0))
   {
     TranslateMessage(&msg);
     DispatchMessage(&msg);
   }
   //eliminamos el hook
   UnhookWindowsHookEx(hHook);
}
Swash me ayudó diciendome a donde tenía que apuntar la estructura (lParam), xD bueno se detectan las pulsaciones de A-Z no se detectan carácteres especiales de esta manera lo quize hacer como un ejemplo sencillo para carácteres especiales hay que procesar el .vkCode deacuerdo con la tabla ascii, xD y esto también lo podemos implementar para el RAT salu2

Re: Detectar tecla con HOOKS by linkgl

Publicado: 06 Ene 2011, 20:16
por irux
definitivamente con la boca abierta


exelente link

Re: Detectar tecla con HOOKS by linkgl

Publicado: 07 Ene 2011, 00:54
por mDrinky
Buen código linkgl .

esta linea:

Código: Seleccionar todo

if(wParam == WM_KEYDOWN)
No sirve exactamente para eso, sirve para detectar cuando se presiona la tecla asi solo se imprime el caracter cuando se presiona y no tambien cuando se suelta! . Prueba a quitar esa linea y veras como es pra eso

salu2!

Re: Detectar tecla con HOOKS by linkgl

Publicado: 07 Ene 2011, 01:16
por linkgl
Drinky94 escribió:Buen código linkgl .

esta linea:

Código: Seleccionar todo

if(wParam == WM_KEYDOWN)
No sirve exactamente para eso, sirve para detectar cuando se presiona la tecla asi solo se imprime el caracter cuando se presiona y no tambien cuando se suelta! . Prueba a quitar esa linea y veras como es pra eso

salu2!
Por eso, ya lo sabía si no no habría puesto esa condición no pongo nada que no se que es En el comentario lo puse "Se usa cuando se detecta la pulsacion de la tecla", para usar cuando se suelta se usa WM_KEYUP, xD y tambien lo puedes implementar en el bucle de mensajes cuando usas WindowProc y mandarlo al bucle de mensajes jeje, es fácil entenderlo porque tengo experiencia en javascript donde los eventos son similares (onKeyUp tambien existe) jeje si se entendió mal el comentario de la linea entonces mi culpa saludos hermano!

Re: Detectar tecla con HOOKS by linkgl

Publicado: 07 Ene 2011, 12:39
por p0is0n-123
Muy bueno linkgl,no hay ni un solo fallo y funciona muy bien....

Gracias,sin duda,esto es oro....

Re: Detectar tecla con HOOKS by linkgl

Publicado: 07 Ene 2011, 21:06
por ØnLy
Woww , que coded....
tengo que decir que es el primer coded que veo en esta seccion , que no entiendo( Comprendo Menos del %70 ).....
Hare lo posible para cambiar eso , el tema es interesante al igual que tu code....