Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/05/2018, à 12:27

JPlaroche

[RESOLU]Compiler avec GCC 7.3 en LTS18.4 opt defaut chg -pie

avec la nouvelle version XUBUNTU 18.4
pour la compilation j'ai rencontré un problème


je ne trouve pas vraiment d'explication , sauf que si je ne met pas cela " dans les options -no-pie" je n'obtient pas un executable ????? mais une lib partagé
quelqu'un pourrait développer cela svp le compilateur est 7.3 GCC , il parait que le compilateur GCC a été paramétrer avec cela , mais pourquoi ???? là je bute
quelques explications seraient bienvenus ....

merci

deux explications (mais elles ne viennent pas de moi ) mais dans ce cas on perd la notion d'executable ... ????

Parce que d’une part, tu ne spécifies à aucun moment que tu souhaites avoir un objet partagé lors de l’édition de liens (implicite), d’autre part, l’option -no-pie spécifie que ton binaire sera toujours chargé en mémoire à la même adresse de référence.

"pie" signifie Position Independent Executable. L’intérêt d’utiliser cette option est de pouvoir, à chaque exécution de ton binaire, le charger à des adresses mémoires différentes (exactement comme pour des objets partagés qui ont besoin d’être relocalisés en mémoire en permanence plutôt que de toujours être chargés à une adresse mémoire fixe, ce qui peut entraîner des problèmes de collisions si deux objets partagés doivent être chargés à la même adresse, par exemple).

L’intérêt de faire ça pour un binaire exécutable et pourquoi pas seulement pour les objets partagés? Eh bien il s’agit d’une mesure d’atténuation (je ne sais pas comment traduire correctement "mitigation") d’attaques informatique de type Return Oriented Programming où tu vas corrompre la mémoire de ton binaire pour exécuter un code arbitraire. Et pour exécuter ce code arbitraire, tu as besoin de savoir à quels adresses mémoires chercher les bonnes informations. Et comme avec l’option PIE les adresses ne sont jamais les mêmes à chaque exécution, ça rend l’exploitation d’une vulnérabilité plus compliqué que prévu.

ou encore ....

Il semble que GCC soit configuré pour créer des binaires -pie par défaut. Ces binaires sont en réalité des bibliothèques partagées (de type ET_DYN), sauf qu'ils s'exécutent exactement comme un exécutable normal. mais ne sont pas marqué executable donc il faut soit les faire monter avec un lanceur ou dans terminal si l'on conserve l'option -pie (perso je trouve que l'on aurait pu les marqués comme executable c'est plus simple lors de test etc... mais j'ai peut-être pas compris ...... car dans un env. fermé pour une gestion de données en entreprise ??????? )

j'ai trouvé les paramètres par défaut  sur UBUNTU
Linker Options
object-file-name -llibrary -nostartfiles -nodefaultlibs
-nostdlib -pie -rdynamic -s -static -static-libgcc
-static-libstdc++ -shared -shared-libgcc -symbolic -T script
-Wl,option -Xlinker option -u symbol

comment avez-vous pris ou résolu la chose .....  par exemple le double clik dans thunar sur votre new executable ( -pie) bennnn ça marche pas

Dernière modification par JPlaroche (Le 17/05/2018, à 03:55)


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne

#2 Le 15/05/2018, à 20:26

grim7reaper

Re : [RESOLU]Compiler avec GCC 7.3 en LTS18.4 opt defaut chg -pie

Salut,

Que le binaire soit PIE ou pas ne change rien au fait que ça soit un exécutable.

Je ne suis pas sur d’avoir compris le problème, mais est-ce que le problème ne viendrait pas simplement d’un problème de permissions?
Est-ce que ton exécutable à bien la permissions x?

Tu compiles avec quelle commande? Peut-être qu’il te manque l’édition des liens?

Hors ligne

#3 Le 17/05/2018, à 01:37

JPlaroche

Re : [RESOLU]Compiler avec GCC 7.3 en LTS18.4 opt defaut chg -pie

grim7reaper a écrit :

Salut,

Que le binaire soit PIE ou pas ne change rien au fait que ça soit un exécutable.

Je ne suis pas sur d’avoir compris le problème, mais est-ce que le problème ne viendrait pas simplement d’un problème de permissions?
Est-ce que ton exécutable à bien la permissions x?



Tu compiles avec quelle commande? Peut-être qu’il te manque l’édition des liens?

bonjour ,
merci pour la réponse , mais non il est bien avec les permissions , -rwxrwxr-x 1  17 03:02 DDSREP
le problème vient du changement de la config de GCC avec -pie , et mes makefile
  ne sont pas d'aujourd'hui j'ai contrôlé sur les anciens programmes ils reste executable mais si je recompile avec GCC 7.3 ils deviennent des lib partagé  ils sont -pie


mon problème est de retouché plus de 200 makefile pour obtenir la meme chose qu'avant     et là je préfère attendre si une réponse vient avant de retoucher ..... 


enfin de compte au lieu d'avoir un executable  ou du moins marqué comme un executable  c'est une lib partagé , et comme indiqué dans les réponses (qui ne viennent pas de moi mais d'explication de personnes connaissant bien GCC dans ses options interne )

si je fait un lanceur  il fonctionne  si je l'appel depuis un terminal ça fonctionne , si j'appel depuis un programme avec system ou execv ça fonctionne


message d'ubuntu :
https://askubuntu.com/questions/911538/ … untu-17-04

mais avec thunar  mon browser sous XFCE  cela ne fonctionne pas   et si je compile avec -no-pie  ça veut dire que les adresse sont fixe pour le démarrage et fonctionne comme le GCC 5..... était par defaut

j'ai vaguement lu que pour nautilus il y avait une solution mais je n'ai pas trouvé .....

Dernière modification par JPlaroche (Le 17/05/2018, à 02:18)


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne

#4 Le 17/05/2018, à 03:52

JPlaroche

Re : [RESOLU]Compiler avec GCC 7.3 en LTS18.4 opt defaut chg -pie

j'ai trouvé   il faut par exemple dans thunar
allez dans configurer les action personalisées
puis ajouter une option avec +
Nom:  --->> RUN
Description:     --->>  run programme
Commande:    --->> exec %f
icon face-monkey   wink

puis dans conditions d'apparition

décochez fichier texte

cochez   autres fichiers


bien avec tout cela ne toucher pas vos makefile en mettant -no-pie pour obtenir un executable   de plus j'ai charger nautilus qui lui aussi a ce problème et vous pouvez voir que votre programme est bien executable  mais déclaré comme bibliothèque partageable
donc même punition pour nautilus que thunar  rajoutez le script.


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne

#5 Le 22/08/2018, à 09:56

JPlaroche

Re : [RESOLU]Compiler avec GCC 7.3 en LTS18.4 opt defaut chg -pie

grim7reaper a écrit :

Salut,

Que le binaire soit PIE ou pas ne change rien au fait que ça soit un exécutable.

Je ne suis pas sur d’avoir compris le problème, mais est-ce que le problème ne viendrait pas simplement d’un problème de permissions?
Est-ce que ton exécutable à bien la permissions x?

Tu compiles avec quelle commande? Peut-être qu’il te manque l’édition des liens?

bonjour

tu ne peux pas l'exécuter directement
il faut te mettre dans une console ect...

avant  ou si tu mets -no-pie dans ta compile tu peux toujours faire comme avant par exemple 16.4

en 18.4 par exemple un programme qui affiche un menu et détermine quelle est le processus a lancer dans l'environnement adéquate    et bien ce programme sera  -no-pie les autres seront -pie

je souhaite avoir répondu.... ils ont fait cela pour la sécurité .....

@bientôt


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne