dimanche 25 novembre 2007

SetWindowsHookEx() ou le hook 'facile' :).

Bonsoir à tous ,
je profite de ce petit week-end pour vous faire partager ma 'release' de la semaine .
Après mon post sur les hooks , je voulais continuer dans cette voie-ci
et donc m'intérésser à la fonction SetWindowsHookEx().D'après ce que l'on a put me raconter la fonction va hooker elle-même certaines apis au niveau du kernel ,cela permettant donc d'analyser les messages envoyés par les différentes applications.
Le but est donc de pouvoir 'capter' toutes les informations liées à la souris et au clavier dans mon petit post .Comme précédemment , nous allons choisis la technique par dll ,on appelle ça un hook système.Notre technique sera donc la suivante :

-Nous allons coder un programme se chargeant d'appeler les fonctions de notre dll.
-Notre programme va donc appeller ces fonctions , les fonctions de filtres vont donc rentrer en actions.

Pour le code ,j'ai opté pour l'utilisation de variable globale ,permettant de retrouver le handle du hook ou celui du fichier de log ,dans tous le programme par exemple.
Je tiens à préciser aussi que les adresses des fonctions contenus dans les dlls auraient put être retrouvées en chainant plusieurs apis ,seulement j'ai choisis de linker le .a de ma dll pour compiler le programme 'principale'.
La source présente donc une utilisation de la fonction SetWindowsHookEx pour deux types de messages ,à savoir les messages liés à la souris et aux claviers.
Lorsque le pointeur de la souris sera dans le coin inférieur droit ,où dans le coin supérieur gauche le programme enverra un OutputDebugString().
De plus le programme se chargera de logger toutes les touches du clavier ,biensûre .
Et puis je vois déjà tous me pointer du doigt : -"Henn , il ouvre et ferme le fichier à chaque écriture!" et bien oui j'ai choisis d'opérer ainsi car cela me permettait de pouvoir ouvrir le fichier log pendant que le prog tourner par exemple.
Je voulais aussi préciser que ce projet est un petit échec ,je me rend compte que lorsque qu'on 'bourrine' le clavier on aperçoit des inversions de lettres..un problème auquel je n'ai trouvé aucune solution donc si des personnes ont reussis merci de prendre contact avec moi merci.
Donc je vous expose cette petit saloperie de code :
-FuckingKeylogger.
-La dll contenant les hooks.

Un petit screenshot :) :




cya.
PS : si quelqu'un aurait une façon valable pour gérer le problèmes des deads keys aussi...

Quelques liens sympa :
- http://vbman.free.fr/articles/hacking/KEYLOG.htm
- http://tcharles.developpez.com/simul/

2 commentaires:

Anonyme a dit…

pour les touches, je pense à
SetWindowsHookEx( WH_KEYBOARD_LL ...

"Installs a hook procedure that monitors low-level keyboard input events. For more information, see the LowLevelKeyboardProc hook procedure."

trapcodien a dit…

jette un coup d'oeil ici, il y a une fonction qui traite les dead key...