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 |