ZendeD
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDernière intervention 2 juillet 2008
-
30 juin 2008 à 21:04
ZendeD
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDernière intervention 2 juillet 2008
-
2 juil. 2008 à 11:17
Bonjour à tous,
Je suis en train de modifier un petit key logger repris de cette source. Le problème est que lorsque j'essaye de le compiler en un seul executable pour qu'il n'y ait pas de DLL, le programme ne rentre pas dans la fonction callback du hook.
J'aimerai donc que l'on m'explique comment procéder.
De plus, lorsque je compile le code avec la dll d'un coté et l'executable de l'autre et que le chemin du fichier log.txt n'est pas le chemin absolu C:\log.txt(ou un autre chemin absolu), alors les touches du clavier ne sont pas enregistrées.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 1 juil. 2008 à 08:57
Le problème c'est que dans ce cas c'est un hook global (pas associé à un thread en particulier), donc il me semble bien que la fonction callback doit être dans une dll.
Quant à ton problème de fichier...la fonction callback est appelée dans le contexte mémoire de l'application qui reçoit le message, donc a priori si tu proposes un chemin relatif, il sera référencé à partir de l'emplacement de l'exécutable de l'application en question et pas de celle qui a installé le hook...donc tu devrais avoir plusieurs fichiers log.txt sur ton disque mais pas là où tu voulais.
ZendeD
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDernière intervention 2 juillet 2008 1 juil. 2008 à 11:52
Merci de cette réponse. En effet, en faisant une petite recherche, j'ai finit par retrouver le fameux fichier (j'aurais du faire ça avant... ^^).
Par contre pour ce qui est du hook global, j'ai vu dans cette sourcequ'il était possible de faire en sorte qu'il n'y ait pas de dll. J'ai éssayé d'adapter mon code mais cela n'a pas fonctionné. Le programme rentre dans la fonction callback seulement quand j'écris dans la console et si j'en sort, le hook s'arrête. De plus, il ne prend plus en compte les majuscules...
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 1 juil. 2008 à 13:21
effectivement j'ai confondu avec autre chose, ça marche dans tous les cas avec __declspec(dllexport).
Par contre du coup j'ai testé le code et il fonctionne parfaitement;
pourquoi as-tu une console d'ailleurs, c'est une application GUI; de toutes manières j'ai testé aussi en lançant une invite de commande, y a pas de problème ni avec les majuscules.
ZendeD
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDernière intervention 2 juillet 2008 1 juil. 2008 à 14:26
J'utilise la console pour les messages d'erreurs =), c'es une habitude que j'ai prise. Lorsque j'ai fini mon projet, je la retire. Tu as bien essayé de tout compiler en un seul .exe ? Et aussi, est-il possible que cela marche sans interface graphique ? Je vais essayer de mon coter.
Merci à toi
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 1 juil. 2008 à 16:32
comment ça compiler en un seul exe? J'ai pris le fichier que tu as publié et compilé, ça fait effectivement un seul exe, mais je vois pas pourquoi y en aurait eu deux; j'ai pas isolé une partie en dll si c'est ça que tu veux dire.
C'est bizarre tout de même, j'ai utilisé ton fichier sans y toucher et ça marchait.
Accessoirement, c'était sous XP SP2.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 1 juil. 2008 à 21:36
bon j'espère avoir dit assez de bétises pour aujourd'hui, dans le cas contraire j'en rajoute une :
il semblerait que la méthode __declspec(dllexport) depuis l'exécutable ne fonctionne (correctement) qu'avec les hooks de type WH_KEYBOARD_LL et WH_MOUSE_LL (cf commentaires de la source de racpp).
donc en l'occurence ça ne marche pas, si on regarde effectivement (avec MessageBox par ex.) dans ton code, la callback n'est pas appellée pour les autres fenêtres.
Solution, ben dll ou WH_KEYBOARD_LL (comme dans la source de racpp).