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 :

GetModuleHandle valeur de retour


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 84
    Par défaut GetModuleHandle valeur de retour
    bonjour,
    la valeur de retour de GetModuleHandle est une adresse,
    comment je pourrai l'afficher pour viérifier sa valeur ?
    ou stocker sa vlauer pour l'ajouter à une autre adresse ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HMODULE h_Module = GetModuleHandle("mon.dll");
    

    merci pour votre aide

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    En général, tous les types "handle" de l'API Windows ne sont en fait que des void*, tu peux donc notamment les convertir en entier par exemple.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 84
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HMODULE h_Module = GetModuleHandle("mon.dll");
     
    DWORD gg;
     
    gg = (DWORD)hphModule + 0x18201E0;

    ?????
    c'est juste ?

    j'ai besoin d'un resultat en hexadecimal

    mais je pense que c'est faux

    une solution ?

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    L'hexadécimal, c'est un mode d'affichage des entiers, donc si tu as un entiers, tu peux afficher de l'hexa sans problème.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    c'est juste ?

    j'ai besoin d'un resultat en hexadecimal

    mais je pense que c'est faux
    Il n'y a qu'à essayer...

    Mais que diable veux-tu faire avec cette adresse ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 84
    Par défaut
    1- c'est pour trouver des offsets
    2- je trouve l'adresse exacte d'une variable que je cherche
    3- je trouve la base adress de cette dll qui manipule cette donnée
    4- je calcule offset
    5- au prochain demarrage de windows,
    je n'ai qu'à trouver la base adress
    et ajouter le offset
    et j'ai ma donnée

    voilà
    j'arrête pas de chercher partout pour pouvoir le réussir

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ca me paraît douteux comme manip, c'est pour faire quoi si ce n'est pas indiscret ?

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Attention: Module Handle et Module Base Address ne sont pas toujours identique.
    Voir la fonction Module32First() et la structure MODULEENTRY32 pour cela, où l'on voit qu'il y a deux champs différents pour handle et base address.

    Ensuite, oui les handles sont des void *, donc pour les afficher:
    - soit utiliser directement le format %p
    - soit utiliser le type UINT_PTR ou encore size_t (et non unsigned int, pour portabilité 64bits) et le format "%Iu" (sur un compilateur assez récent pour le supporter)
    Note: l'équivalent standard de %Iu semble être %z, si j'ai bien compris.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 84
    Par défaut
    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ca me paraît douteux comme manip, c'est pour faire quoi si ce n'est pas indiscret ?
    réponse : ce n'est pas indiscret, mais je ne sais pas comment toi, tu vas le prendre :
    a- je veux lire la valeur de certaines adresses mémoires d'une application, mais uniquement les lire et non pas les modifier
    b- cette application utilise une dll qui manipule des données qui m'interessent
    c- aucune autre application ne charge cette dll
    d- voilà
    e- d'où l'idée de offset et base_adress et les additions et tutti quanti

    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Attention: Module Handle et Module Base Address ne sont pas toujours identique.
    je dois relire et vérifier ces fonctions, donc je te dirai un peu plus tard

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 84
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div style="text-align: left;">Attention: Module Handle et Module Base Address ne sont pas toujours identique.</div>
    bon sang,
    ça m'a drôlement aidé..
    ça y est
    je l'ai

    hahahha
    excellent

    merci

Discussions similaires

  1. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52
  2. fonction operator, valeur de retour
    Par butch dans le forum C++
    Réponses: 21
    Dernier message: 20/09/2004, 10h30
  3. [VB6] Valeur de retour pour une Form
    Par preverse dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/08/2004, 17h16
  4. Valeur de retour d'une procédure externe
    Par elekis dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 16/04/2004, 16h45
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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