[쿠오븐] 알로에맛 쿠키 어셈블리 분석

    쿠키런 알로에쿠키가 2021년 5월 18일에 출시되었다!!!

    알로에맛 쿠키의 능력은 알맞은 커맨드인 0과 1을 입력해서 몬스터를 처치하는 능력이다.

    지금까지 커맨드를 치느라 보지 못했는데 알로에맛 쿠키 능력발동 중에는 어셈블리어가 나오는 것을 발견했다.

    어셈블리어는 다음과 같고 직접 분석해보려고 한다. 어셈블리 코드는 다음과 같다.

    .LC0:
    	.string "HELL-OWOR-LDIM-ALOE"
    
    main:
    	push	rbp
    	mov	rbp, rsp
    	mov	edi, OFFSET FLAT:LC0
    	mov	eax, 0
    	call	printf
    	mov	eax, 0
    	pop	rbp
    	ret
    .

    어셈블리 코드를 분석해보았다.

    • push rbp, mov rbp rsp : 스택 프레임이 생성되는 prologue 과정이다.
    • mov edi OFFSET FLAT:LC0 : edi에 LC0에 값을 넣는다. edi는 함수실행에 필요한 인자를 저장하는 레지스터다.
    • mov eax 0 : eax는 함수 리턴 값으로 사용되어서 0으로 초기화된다.
    • call printf : printf함수를 불러서 실행한다.
    • mov eax 0, pop rbp, ret : 스택 프레임을 지우고 값을 반환하는 epilogue 과정이다. 여기서 반환값은 0이다.

     

     

    분석한 코드를 직접 Handray한 결과이다.

    #include <stdio.h>
    
    int main(){
    	printf("HELL-OWOR-LDIM-ALOE");
    	return 0;
    }

    문자열 "HELL-OWOR-LDIM-ALOE"를 출력하는 간단한 프로그램이다.

     

    Handray한 코드가 정확한지 확인하기 위해서 다음의 옵션을 사용하여 컴파일하여 주었다.

    gcc -o aloe.s aloe.c -S -masm=intel -fno-asynchronous-unwind-tables

    -S : 어셈블리어로 컴파일

    -masm=intel : intel문법으로 컴파일

    --fno-asynchronous-unwind-tables : 어셈블리 코드에서 CFI(Call Frame Infromation)제거

    능력 중에 출력되는 문자열과 거의 일치하는 것을 보아 알맞게 Handray 한걸 알 수 있다.

     

    출력하는 형식의 문자열이 쿠폰 형식과 동일하여 쿠폰입력창에 입력하였더니 300크리스탈을 얻었다.

    댓글