2010-10-25 8 views
2

Est-il possible de faire en sorte que gdb désassemble le code machine de manière interactive? Par exemple:Désassemblage interactif dans GDB

(gdb) [démonter commande] 0x58 0x22 0xEF

Si je donne la commande gdb ci-dessus doit interpréter les valeurs hexa sous forme de code machine et me rendre le démontage. Les commandes que je connais ne font que désassembler une partie de la mémoire du programme chargé.

Répondre

2

GDB ne peut pas faire directement, mais vous pouvez venir assez proche:

cat > t.c <<EOF 
char buf[512]; 
int main() { return 0; } 
EOF 

gcc -g t.c -o t 

gdb -q ./t 
Reading symbols from /tmp/t...done. 
(gdb) b main 
Breakpoint 1 at 0x8048352: file t.c, line 2. 
(gdb) r 

Breakpoint 1, main() at t.c:2 
2 int main() { return 0; } 
(gdb) set buf[0] = 0x58 
(gdb) set buf[1] = 0xef 
(gdb) set buf[2] = 0x22 
(gdb) x/i buf 
    0x8049560 <buf>: pop %eax 
(gdb) q 
+0

+1 pour la créativité et l'effort, mais je suis à la recherche de quelque chose de plus simple. – Rohit