#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
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
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
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