dimanche 7 février 2016

[ Leattle et Big endian ]

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 :

----------------------
| ADRESSE | VALEUR |
----------------------
| | |
| 0x00002 | 00110100 | <--- 34
| | |
| 0x00001 | 00010010 | <--- 12
----------------------

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 :

----------------------
| ADRESSE | VALEUR |
----------------------
| | |
| 0x00002 | 00010010 | <--- 12
| | |
| 0x00001 | 00110100 | <--- 34
----------------------

Ici, le bit le plus haut 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 nt ce moment et je m'efforcerais de faire

partager se que j'ai appris avec vous, comme chaque membre le fait.

Merci de m'avoir lu.

(Les tableaux seront prochainement remis en forme)


from Hackademics : Forum de hacking – hackers white hat – cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1L8Wzwg
via IFTTT

Aucun commentaire:

Enregistrer un commentaire