Home
TD7 : Introduction `a l`assembleur sous linux
Contents
1. TD7 Introduction l assembleur sous linux Premi re ann e d IUT Informatique 1 Premier programme Voici un exemple data debut segment de donn e bonjour String hello world Wn taille long taille bonjour longueur du texte bonjour align 4 text d but segment du code globl main rend le symbolel visible main ecriture via l appel movl 4 eax movl 1 ebx leal bonjour ecx movl taille edx int 0x80 fin de programme via xorl feax Jeax incl eax xorl Aebx Aebx int 0x80 1 Sauvegarder ce texte dans un exemple hello s hello V rifier l ex cution Sy db H H H fichier dont le nom se termine par G n rer un ex cutable avec la commande gcc exemple st me write write system call ebx 1 fd stdout hecx gt hello hedx count execute write system call exit system call eax 0 heax 1 system call exit ebx 0 normal program return code execute system call exit nag par gcc hello s o JCB taxus TESTS 47 gcc hello s o hello JCB taxus TESTS 48 hello hello world 2 Utilisation d un debuggueur gdb est un debuggueur fourni par GNU fournisseur de logiciel libre La com mande man gdb permet d afficher le mode d emploi 1 Lancer gdb sur l ex cutable que vous venez de g n rer exemple gdb hello 2 Commenter la s rie de manipulations a break main b run c disassemble help
2. t data gt 104 h 101 e 108 1 108 1 111 o 32 32 119 w 0x804944c lt data 8 gt 111 o 114 r 108 1 100 d 33 10 n O 0 15 017 0x8049454 lt taille 1 gt 0 0 gdb stepi 0x080483c5 in main gdb info reg eax ebx ecx edx OO 0 0 65 A eax 0x4 4 ebx 0x4013be48 1075035720 ecx 0x1 1 edx 0x80483c0 134513600 gdb stepi 0x080483d6 in main gdb info reg eax ebx ecx edx eax 0x4 4 ebx 0x1 1 ecx 0x8049444 134517828 edx Oxf 15 gdb stepi hello world 0x080483da in main CORRECTION 3 O system call 0 fd stdin gt hello count data bonjour Skip 80 0 taille long align 4 A text globl main main display string using read system call movl 3 eax read movl 0 ebx 4ebx leal bonjour ecx hecx movl 80 edx 4edx int 0x80 movl eax taille execute read system call retour taille entree display string using write system call movl 4 eax movl 1 ebx 4ebx leal bonjour ecx hecx movl taille edx 4edx int 0x80 terminate program via _exit xorl eax Jeax eax incl eax 4eax xorl Aebx ebx ebx int 0x80 write system call 1 fd stdout gt hello count execute write system call O system call 0 1 system call _exit 0 normal program return code execute system call _exit
3. tandard file descriptors define STDIN FILENO 0 Standard input define STDOUT FILENO 1 Standard output define STDERR FILENO 2 Standard error output Ecrire un programme assembleur qui lit une chaine de caract re entr e avec un retour la ligne la place ainsi que sa taille dans une partie r serv e en m moire de la section des donn es puis l affiche l cran CORRECTION du 2 JCB taxus TESTS 82 gdb hello gdb break main Breakpoint 1 at 0x80483c0 gdb r Starting program auto bajard ENSEIGNEMENT ARCHI 2003 TESTS base1 no debugging symbols found no debugging symbols found Breakpoint 1 0x080483c0 in main gdb disassemble Dump of assembler code for function main 0x80483c0 main mov 0x4 eax 0x80483c5 lt main 5 gt mov 0x1 ebx 0x80483ca lt maint 10 gt lea 0x8049444 fecx 0x80483d0 lt main 16 gt mov 0x8049453 fedx 0x80483d6 lt main 22 gt int 0x80 0x80483d8 lt main 24 gt xor Jeax heax 0x80483da lt main 26 gt inc Jeax 0x80483db lt main 27 gt xor hebx hebx 0x80483dd lt main 29 gt int 0x80 End of assembler dump gdb x 31xb 0x80483c0 0x80483c0 lt main gt Oxb8 0x04 0x00 0x00 0x00 Oxbb 0x01 0x00 0x80483c8 lt main 8 gt 0x00 0x00 Ox8d OxOd Ox44 0x94 0x04 0x08 0x80483d0 lt main 16 gt Ox8b 0x15 0x53 0x94 0x04 0x08 Oxcd 0x80 0x80483d8 lt main 24 gt 0x31 OxcO 0x40 0x31 Oxdb Oxcd 0x80 gdb x 31cb 0x8049444 0x8049444 l
4. une commande donne un court mode d emploi 3 La visualisation du contenu de la m moire se fait avec la commande x exemple gdb x 20xb 0x80483c0 permet d afficher partir de l adresse 0x80483c0 les 20 octets b suivants en hexad cimal x format 20xb a Afficher le code mis en m moire il faut donc rep rer l adresse de la premi re instruction et calculer la taille du code b Afficher le segment de donn es 4 Le contenu des registres peut tre affich en utilisant la commande info reg suivie des noms des registres exemple info reg eax ebx cs sans argument elle affiche tous les registres 5 L ex cution pas pas se fait avec la commande stepi nexti idem sans rentrer dans les appels de fonctions a Avancer pas pas en affichant chaque pas le contenu du registre modifi b Que se passe t il lors de l ex cution de la commande int 0x80 3 Un petit exercice Voici quelques informations Skip size fill r serve size octets contenant fill sinon des 0 Les num ros correspondant aux appels syst mes sont dans usr include asm unistd h Le mode d emploi est donn par man man 2 read il y a correspondance avec les noms de registres le num ro de l appel est dans eax ainsi que le retour apres l ex cution ensuite les arguments sont dans l ordre dans ebx ecx edx esi edi read int fd void buf size t count eax ebx ecx edx Les descripteurs de fichiers sont dans usr include unistd h S
Download Pdf Manuals
Related Search
Related Contents
FRAMTID Multímetro Fluke 15B+ Samsung ES20 راهنمای محصول Audiovox AOM-713WP Specifications School User Manual PDFで見る(印刷用ページはこちら) Copyright © All rights reserved.
Failed to retrieve file