본문 바로가기
보안/리버싱

[어셈블리어] Hello World 코드 해석

by Nobb 2024. 2. 12.

HelloWorld.s

.LC0:
        .string "Hello World!"
main:
        push    rbp
        mov     rbp, rsp
        mov     edi, OFFSET FLAT:.LC0
        mov     eax, 0
        call    printf
        mov     eax, 0
        pop     rbp
        ret

 

 

해석

.LC0:                   		; 문자열 "Hello World!"을 저장하는 레이블
        .string "Hello World!"

main:                   		; 프로그램의 진입점
        push    rbp     		; 베이스 포인터를 스택에 저장
        mov     rbp, rsp 		; 스택 포인터를 베이스 포인터에 복사

        mov     edi, OFFSET FLAT:.LC0  	; printf 함수에 전달할 형식 지정자 및 문자열의 주소를 설정
        mov     eax, 0                  ; printf 함수의 리턴 값을 저장할 레지스터를 0으로 초기화
        call    printf                  ; printf 함수 호출

        mov     eax, 0                  ; 프로그램의 종료 코드를 0으로 설정
        pop     rbp                     ; 스택에 저장된 베이스 포인터를 복원
        ret                            	; 함수 종료 및 프로그램 종료

 

 

리버싱하면 나올 고급언어코드 (예상)

#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

'보안 > 리버싱' 카테고리의 다른 글

[리버싱] x64 어셈블리어 기초 02  (0) 2024.02.25
[리버싱] x64 어셈블리어 기초 01  (0) 2024.02.25
[리버싱] 스택 프레임  (0) 2024.02.04
[리버싱] 레지스터  (0) 2024.02.04
[리버싱] 스택  (0) 2024.02.04