본문으로 바로가기

함수 인자 전달 레지스터(64bit)

category Study/reversing 2018. 4. 1. 20:53

32bit에서는 스택을 이용하지만

64bit에서는 레지스터를 이용하여 함수 인자를 전달한다고 한다


어떠한 레지스터가 함수 인자를 전달하는데 쓰이고, 우선순위는 어떠한지 알아보자



Window(PE)의 경우

인자1 -> rcx

인자2 -> rdx

인자3 -> r8

인자4 -> r9

인자의 개수가 4개가 넘어가면 스택을 사용한다





Linux(ELF)의 경우

인자1 -> rdi

인자2 -> rsi

인자3 -> rdx

인자4 -> rcx

인자5 -> r8

인자6 -> r9

인자의 개수가 6개가 넘어가면 스택을 사용한다.

'Study > reversing' 카테고리의 다른 글

CrossCompile - ARM,MIPS  (0) 2018.04.17
GDB 사용법  (0) 2017.11.07
안티 디버깅  (0) 2017.10.17
언패킹  (1) 2017.10.17
패킹  (0) 2017.10.16