Comment empêcher l’optimisation de strcpy ()

Je suis un exemple dans le livre Piratage: l’art d’exploiter et j’obtiens des résultats différents du livre.

Il semble que la fonction strcpy () de l’exemple soit compilée en une instruction telle que:

0x802384c5 : call 0x80482C4  

alors que lorsque je comstack le même programme, il supprime l’appel de la bibliothèque et le remplace par une série d’instructions mov:

 0x8048475 : mov DWORD PTR [eax],0x6c6c6548 0x804847b : mov DWORD PTR [eax+0x4],0x6f57206f 0x8048482 : mov DWORD PTR [eax+0x8],0x21646c72 0x8048489 : mov WORD PTR [eax+0xc],0xa 

Je comprends que le compilateur peut faire diverses optimisations, mais même s’il s’agit du comportement par défaut, j’ai même essayé de le comstackr avec -O0, ce qui est censé empêcher les optimisations.

Comment puis-je comstackr le code afin qu’il fasse référence à la bibliothèque externe?

Je n’ai pas fait d’assemblage ni d’assemblage depuis l’université, alors soyez gentil avec moi 🙂

Avec GCC, vous pouvez utiliser -fno-builtin (désactiver toutes les commandes intégrées) ou -fno-builtin-strcpy (désactiver uniquement la commande strcpy ).