Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !


.


Que trouve-t-on comme programme dans le mbr

Si vous êtes arrivés sur cette page par erreur, faites demi tour sans tarder car ici se trouve l'antre de la bête - et il ne faut pas connaitre la peur car vous allez découvrir les entrailles de votre machine.
Le mbr est le premier secteur du disque chargé en mémoire lors du démarrage d'un ordinateur. Il a pour fonction principale de rechercher une partition où se trouve un système d'exploitation à lancer.
Avant tout il faudra vérifier que la table des partitions est conforme - à défaut un message d'erreur sera affiché.

  • Connaitre la numération hexadécimale.
  • Connaitre le langage assembleur
  • Avoir installé un assembleur/désassembleur comme le paquet nasm

Lors de la mise sous tension, différentes routines se mettent en place ; la première consiste à attendre que la tension de l'alimentation soit stabilisée puis des tests processeur, carte mère, barrettes de mémoire sont effectués. Ceci correspond à la séquence POST.
Vient ensuite la recherche de périphériques de démarrage selon l'ordre de boot.
Le bios charge alors le premier secteur du disque (512 octets) en mémoire vive à l'adresse 0000:7C00
Ce type d'adressage correspond au mode réel de fonctionnement d'un PC, c'est un fonctionnement en mode 16 bits.
Une fois le chargement terminé et sans erreur, l'exécution se poursuit à l'adresse 0000:7C00, et donc suit les instructions qui figurent dans le premier secteur du mbr

Nous avons vu comment afficher le contenu du mbr ; ici il faudra effectuer deux opérations :

- effectuer une copie de la partie exécutable du mbr (les 440 premiers octets) sous la forme d'un fichier
- utiliser un désassembleur pour afficher les instructions sous une forme lisibles par un humain (c'est tout relatif - à moins que je ne sois pas humain) au lieu de valeurs hexadécimales (opcodes)

Pour la première opération, on rentrera dans un terminal

sudo dd if=/dev/sda of=~/mbr_exec.bs bs=1 count=440


La deuxième opération transforme le fichier d'instruction hexadécimales en adresses, opcodes, instructions

ndisasm -b16 ~/mbr_exec.bs > ~/mbr_exec.asm


ndisasm est le désassembleur du paquet nasm, -b16 indique que le code doit être considéré comme de l'assembleur 16 bits. Le résultat est écrit dans le fichier ~/mbr_exec.asm
Le résultat brut pose problème car des chaines de texte ont été considérées comme des instructions et sont donc mal interprétées. Il faut alors procéder par tâtonnement pour les repérer (par exemple avec un éditeur hexa) et les exclure du traitement de désassemblage.
Une autre difficulté est que certaines adresses peuvent contenir, soit du code à un moment donné, soit des données (zone tampon) lorsque que le code n'est plus utilisé.

  • la_partie_executable_du_mbr.1303301466.txt.gz
  • Dernière modification: Le 20/04/2011, 14:16
  • (modification externe)