open함수의 리턴값은 파일 디스크립터라 해서 0,1,2 중 하나가 들어갈 것이라 생각했습니다. 그후 char pw_buf[]에는 초기화가 되어있지 않아 쓰레기 값이 들어있으며 그렇다면 표준입력을 이용해 내가 값을 써주어야 한다고생각했습니다.
성공입니다. sleep이 낚시였습니다. 저도 낚였었습니다....
0x00008cdc <+8>: mov r3, pc 0x00008ce0 <+12>: mov r0, r3
즉 r3는 8ce0+4=8ce4
<key2>
0x00008d04 <+20>: mov r3, pc
0x00008d06 <+22>: adds r3, #4
0x00008d08 <+24>: push {r3}
0x00008d0a <+26>: pop {pc}
0x00008d0c <+28>: pop {r6} ; (ldr r6, [sp], #4)
0x00008d10 <+32>: mov r0, r3
즉 r3은 다음에 실행될 명령이 담긴+4인 8d08와 +4=8d0c
<main>
0x00008d7c <+64>: bl 0x8d20 <key3>
<key3>
0x00008d28 <+8>: mov r3, lr 0x00008d2c <+12>: mov r0, r3
bl명령어 등으로 점프했을 때 다시 돌아와서 실행 할 주소를 가리키는 것이 lr이라고 합니다.
즉 8d80이 됩니다.
8ce4+8d0c+8d80=답