reversing (reverse engineering)/dreamhack (드림핵)

Calling Convention (함수호출 규약)

blackbearwow 2022. 2. 2. 21:58

함수 호출 규약은 함수의 호출 및 반환에 대한 약속이다.

컴파일러는 지원하는 호출 규약 중, 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