본문 바로가기

보안/리버싱

x64 assembly basic

호출(Call): 프로시저를 부르는 행위
반환(Return): 프로시저에서 돌아오는 것

프로시저를 호출할 때는.. 프로시저 실행 후 원래의 실행 흐름으로 돌아와야 한다.
call 다음의 명령어 주소(return address, 반환 주소)를 스택에 저장하고 프로시저로 rip를 이동


x64 어셈블리언어 

call addr : addr에 위치한 프로시저 호출
[명령어 구성]
- push return_address
- jmp addr

leave: 스택프레임 정리
[명령어 구성]
- mov rsp, rbp 
- pop rbp
# rsp에 rbp 값을 넣어주는건, 스택 어딘가에 있는 rsp를 현재 함수의 base 부분으로 부름. 
# 그리고 pop rbp해서 함수의 스택 정리 + 아래에 있는.. 저장해놨던 원래 스택 프레임으로 돌아간다

ret: return address로 반환
[명령어 구성]
pop rip
# 저장해놨던 반환 주소를 pop해서 rip는 원래의 실행 흐름으로 돌아감.

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

reversing.kr - Easy Keygen  (0) 2024.08.26
reversing.kr - Easy ELF  (0) 2024.08.26
Dreamhack Quiz: x86 Assembly 2  (0) 2022.07.10
86 Assembly: Essential Part(1) quiz  (0) 2022.07.08
#2 동적분석과 정적분석  (0) 2022.07.01