| << Segmentation de la mémoire | Les buffer-overflows >> |

| << Segmentation de la mémoire | Les buffer-overflows >> |
| FrizN | 06/01/14 10:03 |
| On accède au premier argument à ebp+8, au deuxième à ebp+12, etc. On accède donc au i-ème argument par ebp + 8 + 4*i Si les arguments étaient rangés dans l'autre sens, il faudrait connaitre le nombre d'arguments, le premier serait par exemple à ebp + 8 + (nb arg - 1)*4, donc sans connaître nbarg on ne pourrait pas retrouver les arguments. |
|
| Anonyme | 05/01/14 23:33 |
| Merci, c'est plus clair. Cependant, "on ne connait pas le nombre d'arguments passés a priori", et alors, je ne comprends pas où est le problème ? |
|
| FrizN | 05/01/14 17:34 |
| 2. Convention encore une fois, mais c'est également la manière logique de faire, puisque pour certaines fonctions on ne connait pas le nombre d'arguments passés a priori (c'est par exemple le cas de printf). |
|
| FrizN | 05/01/14 17:34 |
| 1. Les variables locales sont à ebp - X et les arguments commencent à partir de ebp + 8, oui. L'ebp sauvegardé est bien une donnée locale à la fonction en cours (lié à son site d'appel tout comme l'adresse de retour). Il faut bien garder en tête que tout ceci n'est que convention omissible, et seulement valable pour les archi intel. |
|