Voici deux lignes d'un binaire que je débogue dans gdb. Il s'agit de code C compilé par gcc pour un IA32 :
8049345: 8b 45 08 mov 0x8(%ebp),%eax
8049348: 89 04 24 mov %eax,(%esp)
J'ai un display $eax
configuré de façon à ce qu'il affiche la valeur après chaque étape. Après la première ligne, le display
dit : 6: $eax = 134527652
.
Je peux x 134527652
o x $eax
et je vois 0x804baa4 <input_strings+100>: "1 1 1 1 1 1"
Pourquoi l'affichage et le x me donnent-ils des résultats différents ?
La ligne suivante dit, je crois, de déplacer eax à l'adresse stockée par esp ? J'ai eu un display $esp
et il est dit : 2: $esp = (void *) 0xffffd540
.
Avant le deuxième mov, je x 0xffffd540
et voir : 0xffffd540: ""
après le mov je répète et je vois :
0xffffd540: "\244\272\004\bY\233\004\b\210\325\377\377\214\325\377\377\220\325\377\377\224\325\377\377\230\325\377\377\234\325\377\377\001"
Je pensais que cette ligne allait déplacer eax dans cette adresse, mais je ne comprends manifestement pas quelque chose ici ? Faites-moi savoir si vous souhaitez voir d'autres lignes du binaire.