함수 호출 규약은 함수의 호출 및 반환에 대한 약속이다.
컴파일러는 지원하는 호출 규약 중, CPU 아키텍처에 적합한 것을 선택한다.
cdecl: x86아키텍처는 레지스터의 수가 적으르모, 스택을 통해 인자를 전달한다.
SYSV: SYSV(SYSTEM V)에서 정의한 함수 호출 규약은 다음의 특징을 같는다. (x86-x64아키텍처)
1. 6개의 인자를 RDI, RSI, RDX, RCX, R8, R9에 순서대로 저장하여 전달한다. 더 많은 인자를 사용해야 할 때는 스택을 추가로 이용한다.
2. Caller에서 인자 전달에 사용된 스택을 정리한다.
3. 함수의 반환 값은 RAX로 전달합니다.
해당 내용은 https://dreamhack.io/learn/54#13에서 확인할 수 있다.
'reversing (reverse engineering) > dreamhack (드림핵)' 카테고리의 다른 글
ida 바이너리 패치 (0) | 2022.05.20 |
---|---|
rev-basic-1 (0) | 2022.04.10 |
rep stos (0) | 2022.04.10 |
rev-basic-0 (0) | 2021.12.20 |