[Отказ от домашней работы]
Я работаю в лаборатории бинарной бомбы .По сути, я должен использовать objdump исполняемого файла «бомба», чтобы найти правильные строки ввода для снятия с охраны «бомбы».В настоящее время я решил 5/7 фаз и работаю над 6-й фазой, которая содержит эту сборку:
8048eb0: 39 18 cmp %ebx,(%eax)
8048eb2: 74 05 je 8048eb9 <phase_6+0x49>
8048eb4: e8 d0 0a 00 00 call 8049989 <explode_bomb>
Чтобы не взорвать бомбу, мне нужно установить одинаковые значения для ebx и eax, чтобы je
вызывается вместо функции explode_bomb
.Итак, я нашел строку ввода, которая дает одинаковые значения ebx и eax.Однако, когда я достигаю этой точки при выполнении программы, je
не вызывается, даже если ebx и eax имеют одно и то же значение.В GDB:
Good work! On to the next...
134530284
Breakpoint 2, 0x08048e74 in phase_6 ()
Current language: auto; currently asm
(gdb) break *0x8048eb0
Breakpoint 3 at 0x8048eb0
(gdb) c
Continuing.
Breakpoint 3, 0x08048eb0 in phase_6 ()
(gdb) print $ebx
$1 = 134530284
(gdb) print $eax
$2 = 134530284
(gdb) si
0x08048eb2 in phase_6 ()
(gdb) si
0x08048eb4 in phase_6 ()
(gdb) si
0x08049989 in explode_bomb ()
(gdb)
Почему это не работает?Это первое задание, когда возникла эта проблема.