asm1 (Reverse Engineering)
What does asm1(0x8be) return? Submit the flag as a hexadecimal value (starting with '0x'). NOTE: Your submission for this question will NOT be in the normal flag format. Source
添付ファイル
・test.S
test.Sを確認する。
asm1:
<+0>: push ebp
<+1>: mov ebp,esp
<+3>: cmp DWORD PTR [ebp+0x8],0x71c
<+10>: jg 0x512 <asm1+37>
<+12>: cmp DWORD PTR [ebp+0x8],0x6cf
<+19>: jne 0x50a <asm1+29>
<+21>: mov eax,DWORD PTR [ebp+0x8]
<+24>: add eax,0x3
<+27>: jmp 0x529 <asm1+60>
<+29>: mov eax,DWORD PTR [ebp+0x8]
<+32>: sub eax,0x3
<+35>: jmp 0x529 <asm1+60>
<+37>: cmp DWORD PTR [ebp+0x8],0x8be
<+44>: jne 0x523 <asm1+54>
<+46>: mov eax,DWORD PTR [ebp+0x8]
<+49>: sub eax,0x3
<+52>: jmp 0x529 <asm1+60>
<+54>: mov eax,DWORD PTR [ebp+0x8]
<+57>: add eax,0x3
<+60>: pop ebp
<+61>: ret
引数として0x8beを渡したとする。
<+3>で0x71cと比較し、<+10>のjgで条件に当てはまるので<+37>にジャンプする。
<+37>で0x8beと比較し、<+44>のjneで条件に当てはまらないのでそのまま次の命令に進む。
<+46>で0x8beをeaxに格納し、<+49>でeaxから0x3を引いているので、eaxは0x8bb。
<+52>の無条件ジャンプで<+60>にジャンプし、最後ret命令があるので、returnは0x8bb。
フラグが得られた。
0x8bb