IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Connaitre les routines empruntées


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Par défaut Connaitre les routines empruntées
    Bonjour,
    J'ai une application client qui envoie des données a un serveur distant, je souhaiterai savoir ce que l'application envoie precissement, c'est a dire quels routines du programmes clients sont appelée, en gros avoir une callstack, cependant je ne peux pas débugguer l'application client en question donc je pensais a faire des "hooks" sur le client et plus précissement sur la fonction send de ws2_32.lib, simple théorie, je n'ai jamais fait ca et je n'ai pas trouvé d'articles traitant sur ce sujet.

    Merci de votre aide.

    PS: je n'ai pas les sources evidamment.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Mickael23 Voir le message
    J'ai une application client qui envoie des données a un serveur distant, je souhaiterai savoir ce que l'application envoie precisement, c'est a dire quels routines du programmes clients sont appelée, en gros avoir une callstack, cependant je ne peux pas débugguer l'application client en question donc je pensais a faire des "hooks" sur le client et plus précissement sur la fonction send de ws2_32.lib, simple théorie, je n'ai jamais fait ca et je n'ai pas trouvé d'articles traitant sur ce sujet.
    Il doit être possible d'écrire une DLL qui intercepte les appels et les renvoie ensuite vers les appels originaux.

    PS: je n'ai pas les sources evidemment.
    Alors il nest pas certain que tu ais le droit de faire du retro-ingeneering.

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Mickael23 Voir le message
    J'ai une application client qui envoie des données a un serveur distant, je souhaiterai savoir ce que l'application envoie precissement, c'est a dire quels routines du programmes clients sont appelée, en gros avoir une callstack, cependant je ne peux pas débugguer l'application client en question donc je pensais a faire des "hooks" sur le client et plus précissement sur la fonction send de ws2_32.lib, simple théorie, je n'ai jamais fait ca et je n'ai pas trouvé d'articles traitant sur ce sujet.
    Tu peux déjà commencer par effectuer une capture réseau pour savoir ce qui est envoyé "au final" (cf. Wireshark, donc).

    Ensuite, ton application (un exécutable, je suppose ?) n'exporte en général aucune fonction, il n'est donc même pas possible d'en avoir la liste. Tu peux toutefois en avoir les dépendances via Dependancy Walker, ce qui te donnera la liste des fonctions utilisées par ton programme, même si tu risques d'avoir de mauvaises surprises parfois.

    Si tu veux hooker tout ça, faudra faire un truc plutôt lourdingue, à savoir :
    - Créer une DLL nommée à l'identique, et exportant (au moins) TOUTES les fonctions de ws2_32 utilisées par ton programme.
    - Cette DLL va faire un log de chaque appel, puis retransmettre l'appel vers la DLL originale, et bien sûr retourner la réponse au programme appelant.
    - Le problème est que, pour ton programme, TA DLL devra être nommée "ws2_32.dll"... Et qu'elle va utiliser, justement, la DLL système "ws2_32.dll". Tu risques d'arriver sur un conflit de chargement, à savoir que tu ne sauras pas forcément quelle sera la DLL chargée (la tienne ou celle de Windows), et autres galères du même genre.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Pour tracer les appels systèmes sur les systèmes Unix, il existe truss/strace.
    J'ai trouvé cette version de strace pour windows : http://www.intellectualheaven.com/de...s&H=strace.htm
    (je ne l'ai pas essayée, et il semble que le projet ne soit pas très actif, mais si ça peut aider).

Discussions similaires

  1. [Réseau] Connaitre les machines connectées sur un swicth
    Par Cyspak dans le forum Développement
    Réponses: 10
    Dernier message: 26/02/2007, 12h40
  2. Réponses: 2
    Dernier message: 04/09/2004, 10h53
  3. Connaitre les infos de la base de données
    Par cedric31 dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/07/2004, 12h59
  4. connaitre les bases qui existes
    Par nycagi dans le forum Administration
    Réponses: 13
    Dernier message: 08/06/2004, 12h29
  5. Logiciel permettant de connaitre les fichiers utilisés
    Par Mut dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 14/02/2004, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo