Problem: What does asm0(0xaa,0xf2) 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 located in the directory at /problems/assembly-0_2_485b2d48345b19addbeb06a36aabdc74.
File: THE_FILE
Solution:
.intel_syntax noprefix
.bits 32
.global asm0
asm0:
push ebp
mov ebp,esp
mov eax,DWORD PTR [ebp+0x8]
mov ebx,DWORD PTR [ebp+0xc]
mov eax,ebx
mov esp,ebp
pop ebp
ret
asm0 is a function so calling asm0(0xaa,0xf2) makes 0xaa and 0xf2 arguments.
Code parts explained:
asm0:
push ebp
mov ebp,esp ; ebp = esp
mov eax,DWORD PTR [ebp+0x8] ; eax = arg1, so in this case its 0xaa
mov ebx,DWORD PTR [ebp+0xc] ; ebx = arg2, so in this case its 0xf2
mov eax,ebx ; eax = ebx, so eax now is the value 0xf2
mov esp,ebp ; esp = ebp
pop ebp
ret ; assembly code returns eax, in this case its 0xf2
Flag: 0xf2