C코드와 실행파일 사이 buf 크기 차이

C코드에는 buf 크기가 0x28로 기억되어있는데,
GDB로 바이너리 실행파일을 분석해보니 buf크기가 0x30으로 되어있는거 같습니다
혹시 C언어 코드에 오타가 났다고 이해해도될까요?

#pwnable
작성자 정보
답변 2
Karatus
워게임: 50

아뇨. 컴파일러 최적화로 padding이 들어갈 수도 있습니다.

2022.01.21. 17:33
avatar
sangjun
공부벌레

gcc컴파일러로 컴파일 시에
mpreferred-stack-boundary=N
옵션을 통해 스택의 배수를 설정해주실 수 있습니다

이때 N은 2의 지수를 나타내는 것으로
디폴트오 4로 설정되어있다고 합니다

2^4=16으로 stack aligned가 0x10씩으로 떨어져야 하니 0x28->0x30으로 바뀐 것 같습니다.

또한 stack aligned를 하는 이유는 성능의 최적화를 위해서 하는것으로 알고 있습니다.

자세한 것은 검색이나 아래 링크에서 확인하실 수 있습니다
https://j-jaeyoung.tistory.com/6?category=454813

2022.01.21. 20:49
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기