Hook sans DLL.

ZendeD Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 2 juillet 2008 - 30 juin 2008 à 21:04
ZendeD Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Derniè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.

Merci de votre aide  .

ZendeD

10 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
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.
0
ZendeD Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Derniè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...

Voici mon code... (à télécharger sur megaupload).

Merci de votre aide.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
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.
0
ZendeD Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Derniè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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ZendeD Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 2 juillet 2008
1 juil. 2008 à 14:36
Je confirme, si je compile tout dans un seul exe ca ne marche pas :/ (désolé double poste on peut pas édit )
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
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.
0
ZendeD Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 2 juillet 2008
1 juil. 2008 à 16:46
C'est effectivement ce que je voulais dire, ne pas isoler la partie dll.

En faite ça enregistre bien les messages mais seulement quand je suis dans la fenêtre de mon programme c'est ça qui est bizzard :/ ...

J'ai test sous windows xp SP2 et SP3, toujours le même résultat.

Si quelqu'un passe par là, peut-il tester ?
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
1 juil. 2008 à 19:50
ah effectivement avec d'autres fenêtres ça marche pas, je vais me pencher dessus.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
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).
0
ZendeD Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 2 juillet 2008
2 juil. 2008 à 11:17
Merci beaucoup à toi. J'ai donc changé de méthode.
Ca marche ;) .
0
Rejoignez-nous