본문으로 바로가기

Intel & ARM x64 Debugging 시 참고사항

category Reversing/x64 2015. 3. 31. 18:20

x64에서 추가/변경된 사항

메모리 주소가 64bit로 표현

레지스터 : RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8, R9, R10, R11, R12, R13, R14, R15, RFALGS, RIP

 

Intel

함수 호출 규약 : 변형된 fastcall 하나로 통일

인자를 4개까지 레지스터에 저장하여 전달

1st : RCX

2nd : RDX

3rd : R8

4th : R9

5번째부터 Stack 이용([RSP + 0x20] 부터)

 

AT&T

함수 호출 규약 : 변형된 fastcall 하나로 통일

인자를 6개까지 레지스터에 저장하여 전달

1st : RDI

2nd : RSI

3rd : RDX

4th : RCX

5th : R8

6th : R9

이후부터는 Stack 이용

 

Stack & Stack Frame

서브함수에서 실제 필요한 크기보다 훨씬 크게 스텍을 확보

Parameter를 MOV를 통해 전달

Stack Frame도 RSP로 구현