IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

débutant - Hook Clavier


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 24
    Points : 16
    Points
    16
    Par défaut débutant - Hook Clavier
    Salut, je commence seulement à programmer avec l'api et j'ai voulu comprendre comment créer un hook clavier basique.
    J'ai lu le tutoriel http://tcharles.developpez.com/simul/#hooks et j'ai essayé de créer un keylogger basique. Mais ca ne fonctionne pas. Voici le code :

    Dll
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    FILE *memo;
    HHOOK HookClavier;
    HINSTANCE HInst;
    
    //Procédure du Hook
    LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam){
                 // Fichier dans lequel j'enregistre les touches tappées par l'utilisateur
    	memo = fopen("C:\\hook.txt", "a");  
    		//if(wParam == WM_KEYDOWN){
    			fprintf(memo, "%c", toascii((int) lParam));
    		//}
    		return CallNextHookEx(HookClavier,nCode,wParam,lParam);
    	}
    
    // Fonction qui active le hook
    void ActiveHook()
    {
                HookClavier = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC) HookProc, HInst, 0);
    }
    
    //Désactive le hook
    void EndHook(){
    	UnhookWindowsHookEx(HookClavier);
    }
    
    // Fonction principale (exportée par la dll)
    int WINAPI WinMain(HINSTANCE hInstance,  HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
    	
                 HInst = hInstance;
    	int i;
    	i = 1;
    	
                 ActiveHook();
    	while(i){          // boucle infinie.  Je n'ai pas mis de condition pour la fin du hook car je n'arrive déjà pas à l'activer.
    	}
    	EndHook();
    
    	return 0;
    }
    Voici ensuite le code de l'executable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include "stdafx.h"
    #include "stdlib.h"
    #include "windows.h"
    #include "windowsx.h"
    
    void main(){
                 typedef void (WINAPI *DLL_Function_TestFunction) (void);
    	DLL_Function_TestFunction WinMain;     // handle de la farproc de la dll
    	HMODULE hDLL;             // handle de la dll
    
    
    	hDLL = LoadLibrary("C:\\temp\\hookClavier.dll");	
    	WinMain = (DLL_Function_TestFunction)GetProcAddress(hDLL,"WinMain");
    	if (WinMain!=NULL){ // Jusque là, ca marche, et la dll est chargée, et la fonction aussi ( enfin, elles sont non-nulles ).
    		WinMain();
    		system("pause");
    	}
    }
    Voilà, si quelqu'un peut passer minutes pour m'engueuler pour la façon dont je code comme un sale et me dire où sont les principales erreurs, ce serait super sympa.

    Merci.

  2. #2
    Membre extrêmement actif
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Points : 1 921
    Points
    1 921
    Par défaut
    Salut,

    Tu as un message d'erreur ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Non, pas de message d'erreur.
    En fait, ça compile, mais à l'exécution, la procédure du hook semble ne pas être exécutée. J'ai essayé de mettre un 'system("pause");' au tout début de la procédure du hook et cette commande n'a jamais lieu.

    Mais je crois que j'ai du faire des erreurs de base dans la manipulation des fonctions de hook, car, comme je l'ai dit, je débute avec l'api et c'est mon premier hook ( un test ).

Discussions similaires

  1. [WIN32] Hook clavier / souris
    Par olive_le_malin dans le forum MFC
    Réponses: 6
    Dernier message: 07/06/2006, 15h21
  2. [VB.NET] API hook clavier
    Par Torkan dans le forum Windows Forms
    Réponses: 15
    Dernier message: 05/05/2006, 03h01
  3. hook clavier
    Par bou3 dans le forum Windows
    Réponses: 5
    Dernier message: 14/06/2005, 17h12
  4. Hook Clavier et changement de touche
    Par Fly_57 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 09/08/2004, 19h42
  5. [Hook] Clavier Microsoft office keyboard
    Par merzhin dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 01/06/2004, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo