En passant, j'ai trouver comment faire. Il suffit que j'écrase l'adresse de retour sur la pile ( se trouve tjs +- 0xbffff??? ) avec l'addresse de bon buffer dans la heap. Quand le prog appele return, il ne retourne pas d'ou il vient mais saute vers mon shellcode.
Mais mon shell code se trouve dans la heap ( donc dans le segment .data ) et ne devrait pas être executable ... Pourtant, ca passe. Je suppose que il ne verifie pas pour des raison de performance ?