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 :

demangle c++ lib


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2012
    Messages : 51
    Points : 21
    Points
    21
    Par défaut demangle c++ lib
    Bonsjour,
    Avez vous une idée comment faire pour desactiver le demangle c++ pour une lib .so ou .a
    ef fait pour une exemple :
    > nm libwork.a

    work.o:
    U __cxa_atexit
    U __dso_handle
    00000054 t _GLOBAL__sub_I__Z7DoThingv
    U puts
    00000014 t _Z41__static_initialization_and_destruction_0ii
    00000000 T _Z7DoThingv
    U _ZNSt8ios_base4InitC1Ev
    U _ZNSt8ios_base4InitD1Ev
    00000000 b _ZStL8__ioinit


    Je voulais que nm donne des fausses info
    Merci d'avance

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 163
    Points
    17 163
    Par défaut
    Je ne pense pas que tu puisses faire en sorte qu'il donne de fausses informations.
    nm donnera forcément le mangling effectivement utilisé par les programmes.

    Il n'y a pas de magie, à l'édition de lien, c'est le nom manglé qui est utilisé pour identifier les fonctions.

    Par contre, tu peux retirer les symboles de débug, éventuellement.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 170
    Points : 12 291
    Points
    12 291
    Par défaut
    C'est quoi le VRAI objectif ?
    Car la méthode semble fausse ou très complexe.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2012
    Messages : 51
    Points : 21
    Points
    21
    Par défaut
    L’objectif est de ne pas permettre au clients de demagler notre code, c a d le commende nm soit qu'il donne des fausse méthodes ou fonction soit qu'il ne donne rien
    alors la je cherche une méthode qui me permet de faire ça , soit une option de compilation, soit un bout de code

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 163
    Points
    17 163
    Par défaut
    Je pense que c'est de la paranoïa superflue.
    Démangler n'aidera pas l'utilisateur à obtenir du code.

  6. #6
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par leternel Voir le message
    paranoïa superflue
    Pléonasme ?

    Nouri2012: une mauvaise solution ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define DoThing DoThingsC5I3N4D2vector5String3s1

  7. #7
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    Bonjour,


    Utilise la convention d'appel C. Comme ça tu n'auras que les noms de fonction et pas les paramètres. Mais il faut que le programme appelant utilise aussi la convention d'appel C.


    Fenkys

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 675
    Points
    10 675
    Par défaut
    Citation Envoyé par fenkys Voir le message
    Utilise la convention d'appel C. Comme ça tu n'auras que les noms de fonction et pas les paramètres. Mais il faut que le programme appelant utilise aussi la convention d'appel C.
    Évidemment tu as la solution du extern "C" { #include "XXX" }.

    Mais ici, nous sommes dans la section C++, et si ta bibliothèque est en C++, ton compilateur C va la trouver raide

  9. #9
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Citation Envoyé par Nouri2012 Voir le message
    L’objectif est de ne pas permettre au clients de demagler notre code, c a d le commende nm soit qu'il donne des fausse méthodes ou fonction soit qu'il ne donne rien
    alors la je cherche une méthode qui me permet de faire ça , soit une option de compilation, soit un bout de code
    Ce que tu cherches, c’est strip.

    De manière générale, on ne devrait pas livrer des libs avec les symboles, pas pour des raisons d’obfuscation, mais simplement parce que ça augmente la taille en mémoire.

    À mon avis tu cherches une mauvaise solution à un problème (si tu veux de l’obfuscation, passe par un obfuscateur de code, pas par de la bidouille).

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2012
    Messages : 51
    Points : 21
    Points
    21
    Par défaut
    que pensez vous de deux option: -fvisibility=hidden -fvisibility-inlines-hidden
    je vois pas la diff sans et avec

  11. #11
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Cela fait que les symboles correspondant aux fonctions qui ne sont pas explicitement déclarées exportées ne le sont pas.

    Sur un exécutable, ça ne devrait rien changer. Sur une lib, ça fait que tu ne peux plus utiliser cette fonction en dehors de la lib elle-même.

    Ça fait une différence normalement sur la sortie de nm (le symbole n’est plus dans la même section).

Discussions similaires

  1. [Erreur dans la lib...]
    Par Gonath dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/12/2003, 09h02
  2. [kdevelop]linker les lib openGL sous kdevelop
    Par bafman dans le forum OpenGL
    Réponses: 6
    Dernier message: 16/12/2003, 08h36
  3. problème de compatibilité de .lib
    Par projet_chu dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/11/2003, 17h05
  4. Chargement d'une lib partagée C++ dans un programme C
    Par Zero dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/09/2003, 16h40
  5. inclure une librairie *.lib
    Par darkbm dans le forum C
    Réponses: 2
    Dernier message: 16/12/2002, 22h48

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