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 :

Récupérer le prototype d'une fonction exportée


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut Récupérer le prototype d'une fonction exportée
    Salut,

    Voilà il se trouve qu'il y a un an j'avais crée une DLL qui gérait un GUI sous OpenGL.

    Je chargais les fonctions de cette DLL de manière dynamique, mais il se trouve qu'après un formatage j'ai perdu le code source

    J'ai quand même le *.dll mais je n'ai plus les prototypes des fonctions que la dll exporte

    Y a-t-il un moyen de récupérer ces prototypes?
    Aussi, je suis quasi certain que certains arguments étaient des structures dont je ne me souviens encore pas

    Y a-t-il un moyen de récupérer ces structures?

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Je ne crois pas que ce soit faisable.

    Je sais qu'on peut récupérer les nom des fonctions mais c'est tout.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Exact, ce n'est pas faisable.
    On peut bien récupérer les noms des fonctions exportées mais pas les paramètres.

    Il faut essayer de retrouver un fichier .h des déclarations de cette DLL dans un autre projet.
    On ne peut pas faire boire un âne qui n'a pas soif.

  4. #4
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    C'est possible, il faut regarder le code assembleur des fonctions.
    Si c'est pas trop long, tu peux faire un post avec ta dll sur le forum assembleur.
    L'itération est humaine; la récursion, divine.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Citation Envoyé par Mayti4
    C'est possible, il faut regarder le code assembleur des fonctions.
    Si c'est pas trop long, tu peux faire un post avec ta dll sur le forum assembleur.
    Ouais, vu comme ça, tout est possible.

    Et puis, quand on a une fonction du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Fonction(Struct1 arg1, double arg2, double arg3);
    on peut toujours examiner le code désassemblé pour essayer de trouver le rôle de tous les paramètres et de la valeur de retour...
    On ne peut pas faire boire un âne qui n'a pas soif.

  6. #6
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par NicolasG
    Et puis, quand on a une fonction du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Fonction(Struct1 arg1, double arg2, double arg3);
    on peut toujours examiner le code désassemblé pour essayer de trouver le rôle de tous les paramètres et de la valeur de retour...
    On peut trouver le nombre de paramètres de la fonction, par contre savoir ce qu'ils sont.. mais on peut aussi savoir si un paramètre est une structure.

    C'est lui qu'as codé cette dll, il a les noms des fonctions, si ces noms sont explicites, on peut deviner les paramètres.
    L'itération est humaine; la récursion, divine.

  7. #7
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    A priori, tu as exporté ta DLL en C++, donc le nom est décoré donc tu auras au moins les paramètres, mais pas le type de retour.

  8. #8
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Merci beaucoup pour vos réponses, en désassemblant la dll j'ai réussi à récupérer le nom des fonctions et les paramètres

    Je connais encore plus ou moins les types de retour vu que je les avais mis dans le nom des fonctions

    Le seul truc qui m'embête encore ce sont les structures dont je n'arrive pas exactement à récupérer les membres mais bon, j'y travaille

    Merci beaucoup de m'avoir pointé vers le désassemblage de la dll, je n'y avais même pas pensé ^^

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Hum je ne suis pas un expert en C++ mais il te faut également la lib de linkage (libnom_dll.lib), le header à lui tout seul ne te suffit pas pour te lier à la DLL !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Citation Envoyé par CSoldier
    Hum je ne suis pas un expert en C++ mais il te faut également la lib de linkage (libnom_dll.lib), le header à lui tout seul ne te suffit pas pour te lier à la DLL !
    Non j'importe les fonctions de manière dynamique

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Ha ok, au temps pour moi alors
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Prototype] [AJAX] Récupérer la réponse / Lancer une fonction
    Par Shirraz dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 07/04/2009, 06h50
  2. Réponses: 6
    Dernier message: 08/06/2006, 10h07
  3. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41
  4. Réponses: 3
    Dernier message: 09/03/2006, 15h12
  5. Récupérer le prototype d'une fonction
    Par uaz dans le forum Général Python
    Réponses: 2
    Dernier message: 27/07/2004, 17h24

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