今天也來解Reverse的題目
asm1:
<+0>: push ebp
<+1>: mov ebp,esp
<+3>: cmp DWORD PTR [ebp+0x8],0x3fb
<+10>: jg 0x512 <asm1+37>
<+12>: cmp DWORD PTR [ebp+0x8],0x280
<+19>: jne 0x50a <asm1+29>
<+21>: mov eax,DWORD PTR [ebp+0x8]
<+24>: add eax,0xa
<+27>: jmp 0x529 <asm1+60>
<+29>: mov eax,DWORD PTR [ebp+0x8]
<+32>: sub eax,0xa
<+35>: jmp 0x529 <asm1+60>
<+37>: cmp DWORD PTR [ebp+0x8],0x559
<+44>: jne 0x523 <asm1+54>
<+46>: mov eax,DWORD PTR [ebp+0x8]
<+49>: sub eax,0xa
<+52>: jmp 0x529 <asm1+60>
<+54>: mov eax,DWORD PTR [ebp+0x8]
<+57>: add eax,0xa
<+60>: pop ebp
<+61>: ret
一開始沒有仔細看題目,一直以為要加 picoCTF{},還我搞了好久
1.<+1> 輸入 0x2e0。
2.<+3> 比較 0x2e0 和 0x3fb,結果 0x2e0 < 0x3fb,所以不跳到 <+10>,而是繼續執行。
3.<+12> 比較 0x2e0 和 0x280,由於相等,所以不跳到 <+29>,而是繼續執行 <+21>。
4.<+24> 把 eax 加 0xa,結果 0x2e0 + 0xa = 0x2ea。
5.跳轉到 <+60>
6.執行 pop ebp 並返回。