Bonjour,

Je rencontre un problème avec GDB lorsque que je veux créer un point d'arrêt sur la fonction main d'un programme pour pouvoir désassembler celui-ci.

Background

Ubuntu x64 LTS 14.04
GDB configuration : x86_64-linux-gnu

Je suis les cours d'OpenSecurityTraining et plus précisément l'introduction à l'architecture X86. J'en suis donc à la partie "laboratoire" du cours C où il faut "désamorcer" une bombe (la CMU Bomb compilée en 64 bits avec les symboles - la version 32 bits). Une sorte d'introduction au reverse engineering. J'ai commencé les cours sur une machine virtuelle sous Elementary OS où je n'ai eu aucun problème. J'utilise dorénavant un Ubuntu que j'ai installé depuis peu. C'est là que je rencontre mon problème. Le breakpoint sur main fait référence à une source bomb.c que je ne suis pas censé avoir pour l'exercice. J'ai donc, sans surprise, une erreur lors que je lance le bousin. Le fait étonnant c'est qu'il me fait référence à la source exclusivement quand je veux faire un breakpoint sur le main. Je peux sans aucun soucis ajouter un breakpoint sur une autre fonction comme phase_1, lancer le programme et désassembler la fonction quand j'arrive dessus.

Mon erreur (breakpoint sur main)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
gdb ./bomb-x64
(gdb) b main
Breakpoint 1 at 0x400dbd: file bomb.c, line 37.
(gdb) r
...
bomb.c: no such file or directory
Breakpoint sur une autre fonction (phase_1)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(gdb) b phase_1
Breakpoint 3 at 0x400f00
(gdb) r
 
Breakpoint 1, 0x0000000000400f00 in phase_1 ()
(gdb) disas
Dump of assembler code for function phase_1:
=> 0x0000000000400f00 <+0>: sub    $0x8,%rsp
   0x0000000000400f04 <+4>: mov    $0x4023b0,%esi
   0x0000000000400f09 <+9>: callq  0x401308 <strings_not_equal>
   0x0000000000400f0e <+14>:    test   %eax,%eax
   0x0000000000400f10 <+16>:    je     0x400f17 <phase_1+23>
   0x0000000000400f12 <+18>:    callq  0x40140a <explode_bomb>
   0x0000000000400f17 <+23>:    add    $0x8,%rsp
   0x0000000000400f1b <+27>:    retq   
End of assembler dump.
Si vous avez besoin d'autres informations ou de plus de précisions, n'hésitez pas à me demander.