본문 바로가기

문제

picoCTF 2018 assembly-1 풀이

문제 What does asm1(0xcd) return?

함수 asm1(0xcd)를 호출하였을때 리턴 값은 무엇인가?(파라미터 0xcd)

-----------------------------------------------------------------------------------------------------------------------------------

.intel_syntax noprefix
.bits 32

.global asm1

 

 

asm1:
    push ebp
    mov ebp,esp //프레임 생성

    cmp DWORD PTR [ebp+0x8],0xde //거짓 0
    jg part_a //실행 안됨
    cmp DWORD PTR [ebp+0x8],0x8
    jne part_b //같지 않으면 part_b로 점프(jump if not equal) //실행됨
    mov eax,DWORD PTR [ebp+0x8]
    add eax,0x3
    jmp part_d


part_a:
    cmp DWORD PTR [ebp+0x8],0x4e
    jne part_c
    mov eax,DWORD PTR [ebp+0x8]
    sub eax,0x3
    jmp part_d


part_b:
    mov eax,DWORD PTR [ebp+0x8]
    sub eax,0x3 //cd-3
    jmp part_d //part_d로 점프
    cmp DWORD PTR [ebp+0x8],0xee
    jne part_c
    mov eax,DWORD PTR [ebp+0x8]
    sub eax,0x3
    jmp part_d


part_c:
    mov eax,DWORD PTR [ebp+0x8]
    add eax,0x3
    part_d:
    pop ebp //스택프레임 해제 asm1종료
    ret //eax == 0xca

-----------------------------------------------------------------------------------------------------------------------------------

보통 EAX레지스터를 사용하여 리턴값을 전달한다. 

리턴값 == EAX == 0xca

'문제' 카테고리의 다른 글

suninatas web challenge 2  (0) 2021.04.01
suninatas web challenge 1  (0) 2021.04.01
CodeEngn #1  (0) 2020.03.11
picoCTF 2018 assembly-2 풀이  (0) 2019.07.17
picoCTF 2018 assembly-0 풀이  (0) 2019.05.20