0
[숙제 면책]동일한 값을 비교할 때 cmp 및 je가 작동하지 않음
저는 binary bomb lab에서 작업 중입니다. 기본적으로, 나는 "폭탄"실행 파일의 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>
이 je
가 대신 호출되도록 내가 같은 값으로 EBX와 EAX를 설정해야합니다, 폭탄을 폭발하지하기를 explode_bomb
함수 중 하나입니다. 그래서, 나는 ebx와 eax의 같은 값을주는 입력 문자열을 발견했다. 그러나 프로그램 실행시이 지점에 도달하면 ebx와 eax가 같은 값이더라도 je
이 호출되지 않습니다. 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)
왜 작동하지 않습니까? 이 문제가 발생한이 과제는 이번이 처음입니다.
'(% eax)'를 마지막으로 확인한 것은'eax' 자체가 아니라'eax'가 가리키는 값을로드한다는 의미입니다. 이 정확한 어셈블리 구문에 익숙하지는 않지만. – Mysticial
그래, 나는 단지 골머리를 앓고 있었다. 오케이. 고마워요, 지금 바로 대답을 찾았습니다. :) – deeb
해답을 제출해 주시면 최선의 답변으로 표시 할 수 있습니다. – deeb