반응형
Ubuntu 16.04에서 gcc로 컴파일 하게 되면 함수의 프롤로그와 에필로그에 ecx를 통한 esp 변조를 하는 것을 볼 수 있는데
이는 SSE계열의 함수들을 위해서 미리 예약해두는 공간이라고 한다.
sse계열의 함수는 고속 복사를 위해서 128비트 단위로 복사를 진행해서 기존의 push ebp, mov ebp, esp와 같은 형태로는 에러가 날 수 있다.
만약 sse계열 함수를 사용하지 않는다면 gcc 에 옵션을 줘서 해결할 수 있는데 옵션은 아래와 같다.
gcc -o hou hou.c -mpreferred-stack-boundary=(2 ~ 12)
여기서 boundary를 계산할 떄는 2^(num)으로 계산되고 스택에서는 최소 4바이트를 push해야하기에 boundary값의 min은 2가 들어간다.
'공부' 카테고리의 다른 글
[how2heap] poison_null_byte (0) | 2017.05.09 |
---|---|
64비트 Calling Convention (0) | 2017.05.09 |
정보보안기사 정리 (0) | 2017.04.20 |
[C++] 프로그램 관리자 권한 요구 (0) | 2017.01.04 |
[how2heap] house_of_spirit (0) | 2016.12.28 |