-
Stack Smashing Detected
Bonjour,
Je cherche à effectuer un dépassement de tampon et pour cela, je souhaite désactiver la "Stack Smashing Protection". J'ai cherché pendant des heures et il s'avère qu'il faut utiliser l'option -fno-stack-protector (je compile avec gcc), ce qui me donne la commande suivante en ligne de commande :
Code:
gcc -o mon_programme mon_programme.c -fno-stack-protector
Je remarque déjà que l'option -fno-stack-protector ne semble pas exister (la complétion me montre que cette commande n'existe pas) mais la compilation marche sans erreur.
J'exécute alors avec ./mon_programme et j'ai le message "*** stack smashing detected ***"...La désactivation de la Stack Smashing Protection n'a pas fonctionné.
Je cherche donc à savoir si quelqu'un a une idée pour désactiver cette protection et/ou pour ne plus avoir ce message ?
Merci d'avance.
-
C'est bien -fno-stack-protector pour désactiver le SSP.
Les distributions qui ne l'activent pas par défaut se font rares. Même Arch Linux, que j'utilise, a sauté le pas. Peut-être que le gars qui maintient ton paquet gcc fait du zèle (au hasard Ubuntu..? :roll: ) ? Essaie de compiler et exécuter le programme avec un gcc/clang qui provient d'une autre source pour déterminer si c'est le cas.
-
Bonsoir,
bizarre que la protection ne soit pas désactivée chez vous !
Essayer avec l’option suivante -fno-stack-protector-all cela permet de tout désactiver et normalement vous ne devez plus avoir de canari et obtenir une erreur de segmentation.
Cependant, dans le cas ou vous utiliser d’autre compilateur exemple sous Clang /LLVM vous pouvez procéder de la façon suivante
-fno-sanitize-recover=all ou préciser l’option tel que:
-fsanitize=safe-stack -> pas de protection de la pile contre les erreurs de corruption de mémoire basées sur la pile.
-fno-sanitize = memory -> pas de détection d'erreurs mémoire.
à bientôt.