Bonjour à tous,
Une petite explication concernant l'agencement des variables en mémoire, deux agencements seront présentés, le big endian ainsi que le little endian.
Le little endiant est utilisé par les processeurs Intel tandis que le big endian est implémenté dans les processeurs ARM.
Petit rappel concernant le fonctionnement interne des PC :
Lorsque vous programmez, vous devez souvent(toujours ?) utiliser des variables pour stocker des informations, quand vous
lancez votre programme, les données sont chargées depuis le disque dur vers la RAM pour que le processeur puisse interagir avec celle-ci.
Le processeur ne travail JAMAIS avec le disque dur, il est bien trop lent, les données sont d'abord chargées dans la RAM pour qu'elles puissent être exploitables par le processeur.
Le processeur dispose de plusieurs registres qui vont lui permettre de se situer dans la RAM et d'effectuer des opérations sur les valeurs assignées aux adresses.
C'est ici que rentre en jeu le [little - Big] endian :
Avec une architecture Big endian :
Exemple avec 0x1234 en mémoire :
rect3013.png
La variable est placée telle qu'elle en mémoire, cette disposition paraît normale au premier abord, cependant elle ne l'est pas si vous avez eu l'occasion de faire
un peu de binaire, en effet, en base 2, on lit de droite vers la gauche.
Cette manière de disposer les valeurs en mémoire peu portée a confusion cependant je trouve qu'elle est plus "human readable".
Avec une architecture Little endian :
Exemple avec 0x1234 en mémoire :
rect3023.png
Ici, le bit le plus faible sera stocké dans l'adresse la plus petite, cette représentation peut paraître étrange, mais elle respecte bien
la représentation binaire. On retrouve notre 0x1234 mais à l'envers, plutôt embêtant.
De nouveau post seront a venir concernant le reverse engineering, je cultive avec acharnement le domaine en ce moment et je m'efforcerais de faire
partager se que j'y ai appris avec vous, comme chaque membre le fait.
Merci de m'avoir lu.
( un up du post plus complet qui réponds a une problématique posée dés le départ est a venir en réponse à vos remarques, très pertinentes, et je vous en remercie )
Une petite explication concernant l'agencement des variables en mémoire, deux agencements seront présentés, le big endian ainsi que le little endian.
Le little endiant est utilisé par les processeurs Intel tandis que le big endian est implémenté dans les processeurs ARM.
Petit rappel concernant le fonctionnement interne des PC :
Lorsque vous programmez, vous devez souvent(toujours ?) utiliser des variables pour stocker des informations, quand vous
lancez votre programme, les données sont chargées depuis le disque dur vers la RAM pour que le processeur puisse interagir avec celle-ci.
Le processeur ne travail JAMAIS avec le disque dur, il est bien trop lent, les données sont d'abord chargées dans la RAM pour qu'elles puissent être exploitables par le processeur.
Le processeur dispose de plusieurs registres qui vont lui permettre de se situer dans la RAM et d'effectuer des opérations sur les valeurs assignées aux adresses.
C'est ici que rentre en jeu le [little - Big] endian :
Avec une architecture Big endian :
Exemple avec 0x1234 en mémoire :
rect3013.png
La variable est placée telle qu'elle en mémoire, cette disposition paraît normale au premier abord, cependant elle ne l'est pas si vous avez eu l'occasion de faire
un peu de binaire, en effet, en base 2, on lit de droite vers la gauche.
Cette manière de disposer les valeurs en mémoire peu portée a confusion cependant je trouve qu'elle est plus "human readable".
Avec une architecture Little endian :
Exemple avec 0x1234 en mémoire :
rect3023.png
Ici, le bit le plus faible sera stocké dans l'adresse la plus petite, cette représentation peut paraître étrange, mais elle respecte bien
la représentation binaire. On retrouve notre 0x1234 mais à l'envers, plutôt embêtant.
De nouveau post seront a venir concernant le reverse engineering, je cultive avec acharnement le domaine en ce moment et je m'efforcerais de faire
partager se que j'y ai appris avec vous, comme chaque membre le fait.
Merci de m'avoir lu.
( un up du post plus complet qui réponds a une problématique posée dés le départ est a venir en réponse à vos remarques, très pertinentes, et je vous en remercie )
Commentaire