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

Linux Discussion :

Empecher la decompilation du code compile par GDB


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 7
    Points
    7
    Par défaut Empecher la decompilation du code compile par GDB
    Bonjour a tous,

    je programme actuellement (en c++) des modeles sous GDB, qui une fois compilee, finissent en executable (avec une extension .o). Comment empecher (de mon mieux) que ce code puisse etre decompile pour retrouver ses sources? Quel est le niveau de securite qu'offre un code compile par GDB?

    Merci pour votre aide!

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    GDB ne sait pas "décompiler" un programme, donc ton problème ne se pose pas. Si tu n'as pas les sources, tout ce que peux faire GDB c'est t'afficher le code assembleur, et ça tu ne peux évidemment pas l'empêcher.

    D'ailleurs en passant, ce n'est pas GDB qui compile ton programme.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Je reformule : mon but est empecher la decompilation d'un programme (compile par gdb)

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Salut,

    gdb est un debugueur, pas un compilateur. Il ne compile rien.

    Et la seule facon d'empecher quelqu'un de desassembler un binaire c'est de pas lui donner

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    • ne pas compiler avec l'option -g
    • faire un "strip" du binaire.


    Maintenant, comme dit plus haut, rien n'empêchera jamais personne de décompiler. Tout ce que l'on fait st rendre le décodage extrêmement difficile.

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Pour toi c'est quoi une "décompilation" ? Que veux-tu empècher exactement ?

    La "décompilation" (générer du code source à partir d'un objet compilé) ça n'existe pas vraiment pour du code compilé en C ou C++. En fait ça existe, mais 1) GDB ne le fait pas et 2) le code obtenu est à peu près aussi illisible que du code assembleur.

    Et je répète : ce n'est pas gdb qui compile ton programme. Gdb est un débugger. Ton programme est compilé par un compilateur, par exemple gcc.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par matafan Voir le message
    2) le code obtenu est à peu près aussi illisible que du code assembleur.
    c'est du code assembleur

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Je code des modeles qui doivent etre executes par d'autres; il n'ont pas acces au code source mais je veux aussi empecher qu'ils puissent faire de la retro engeneering sur l'executable pour voir comment marchent les modeles...

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    encore une fois, tu n'empêcheras personne de décompiler.

    Mais comme la compilation sans le flag -g enlève les informations de debugging, et que un .o ne peut redonner que du code assembleur sans les noms de variables et sans les commentaires, bon courage à celui qui essaierait de comprendre un code un tant soit peu complexe.

    J'ai moi-même essayé au début de ma carrière juste pour une petite bibliothèque de 5000 lignes, et nous avons fini par tout "réécrire" "from scratch"..

    Car 5000 lignes de code en assembleur avec des calculs complexes sans noms de variable est pour le moins .. ardu...

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    ok; merci pour l'info sur le flag.
    je pense que je vais rajouter en plus des lignes inutiles de calcul histoire de !

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 891
    Points : 219 433
    Points
    219 433
    Billets dans le blog
    123
    Par défaut
    Citation Envoyé par marsupcs Voir le message
    je pense que je vais rajouter en plus des lignes inutiles de calcul histoire de !
    C'est idiot
    Le principe d'un gars qui veut trifouller le programme c'est d'avoir un disassembleur qui cherche au possible toute les références lisibles. Soit enlever -g et faire un strip ou un sstrip ( voir sur le net ) enlevera toute les références restantes compréhensibles par le desassembleur. Soit le gars n'aura plus aucun repaire, et devra se taper ligne par ligne le code assembleur, qui rappelons le se trouve très mélanger aux codes des librairies que ton programme utilise :p

Discussions similaires

  1. Compilation du code généré par QxEntityEditor
    Par AgriPacTe dans le forum QxOrm
    Réponses: 11
    Dernier message: 10/07/2015, 15h03
  2. Intégrer du code compilé par GWT dans une page html
    Par leynilegur dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 26/08/2007, 21h27
  3. empecher la visualisation du code source
    Par Teo dans le forum ASP
    Réponses: 7
    Dernier message: 24/10/2003, 14h11
  4. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  5. [CODE] Compilation conditionnelle ?
    Par Cornell dans le forum Langage
    Réponses: 3
    Dernier message: 16/09/2003, 18h16

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