victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 2023
-
4 févr. 2006 à 18:20
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 2023
-
5 févr. 2006 à 09:44
Bonjour,
J'ai un programme avec une dll.
Sous dev-c++ en compilant la dll comme du C++ la fonction DllMain n'est pas appellée.
Je l'appelle donc avec LoadLibrary et je lui transmet son handle pour pouvoir hooker.
Jusque là pas de problème.
J'ajoute des sockets qui sont lancés par la même fonction que celle qui a donné au hook son instance.
Les sockets fonctionnent normalement.
Là est la chose bizarre c'est que si la fonction d'envoie des données
est executé par le hook il dit que WSAStartup n'as pas été appellé et
si c'est par la fameuse fonction de départ ça marche sans problème
(même si c'est fait simultanément !).
Je pense à un problème d'instance. N'y a-t-il pas moyen de changer la
fonction d'instance qui appelle pour avoir la même instance pour les
sockets et le hook ?
Précision : Les variables sockets sont des variables définies hors accolades et donc globales !
Ca peut venir d'autre chose mais si vous avez une solution je suis preneur.
Je vous remerci de m'avoir lu jusqu'au bout et espère une response !
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 févr. 2006 à 18:34
Une variable globale n'est pas valide pour une fonction de hook car il y a une copie de la dll dans différents processus.
Faut placer tes variables en section Shared. Si ce sont des socket encore faudra-t-il une initialisation WSAStartup dans chaque processus où le hook entre.
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 4 févr. 2006 à 18:56
Bonjour,
Autre indication c'set la même fonction qui appellé pour envoyer les
donnés c'est à dire que le hook fait appelle à une fonction la même que
la fonction principale et qui elle fera appel au socket.
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 4 févr. 2006 à 19:19
Bonjour,
Le programme ne contient que WinMain sans fenêtre et n'appelle qu'une
fonction (la principale de la DLL) et c'est cette fonction (dans la
DLL) qui fait le reste.
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 févr. 2006 à 21:43
Mais le hook n'est pas dans "la dll qui elle appelle le socket" ???
Si oui tout ceci est bien dans des espaces mémoires différents selon les événements et donc un socket initialisé dans un processus est utilisé dans un autre, pas viable.
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 5 févr. 2006 à 09:14
Bonjour,
Je viens de vérifier avec une source et j'ai vu que la DLL se chargeait
dans chaque processus mais seulement quand j'appuyais sur une touche et
restait chargée.
Suivant les processus il me dit socket non initialisé et sur Firefox "operation socket on non socket".
Je sais pas comment marche un envoi de message sans fenêtre. Quelqu'un pourrait m'expliquer ?