2011-09-30 5 views
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) 

왜 작동하지 않습니까? 이 문제가 발생한이 과제는 이번이 처음입니다.

+0

'(% eax)'를 마지막으로 확인한 것은'eax' 자체가 아니라'eax'가 가리키는 값을로드한다는 의미입니다. 이 정확한 어셈블리 구문에 익숙하지는 않지만. – Mysticial

+0

그래, 나는 단지 골머리를 앓고 있었다. 오케이. 고마워요, 지금 바로 대답을 찾았습니다. :) – deeb

+0

해답을 제출해 주시면 최선의 답변으로 표시 할 수 있습니다. – deeb

답변

1

(%eax)%eax과 같지 않습니다.

(% eax)은 eax이 가리키는 값을로드하는 것으로, eax이 아닙니다.

관련 문제