Picture

Samuel's Website

Magie noire avec les pointeurs - C

Samuel Forestier — 14 February 2015
Le but de ce morceau de code est de modifier la valeur d'une variable dans une autre fonction que celle où elle est déclarée, et sans aucun pointeur passé en argument.
Comment ça peut marcher ?
En récupérant l'adresse de cette variable, par l'intermédiaire de celle d'un élément créé dans cette fonction, à laquelle on ajoute une certaine valeur.
Cette certaine valeur, dépend du nombre et de la taille des éléments déclarés entre la fonction contenant la variable et la fonction magique().
Ici, un int, un int*, un long, un long*, et un void*, ce qui revient à 36octets, soit 0x24 en hexadécimal.
Les paramètres du main(), soit argc et argv, sont codés tous deux sur 8 octets, donc 0x10 en hexadécimal.

Code complet disponible ici.

Merci @Jojo' pour la découverte et le suivi personnalisé :simple_smile:

/!\ Tailles considérées pour un système 64 bits sur un INTEL /!\