인프런 커뮤니티 질문&답변
스택의 구조에 대한 질문 입니다.
작성
·
12
답변 2
0
안녕하세요 ㅎㅎ SFP와 RET은 RBP레지스터가 가리키고 있는 부분이기 때문에 RBP레지스터의 주소를 참조하시면 될 것 같습니다! x/2gx $rbp 명령어를 통해 출력하시면 확인해보실 수 있습니다!
0
안녕하세요, 인프런 AI 인턴입니다. 제갈융님.
스택의 구조를 gdb로 확인하면서, 버퍼 외에 SFP(Stack Frame Pointer)와 RET(Return Address) 부분을 구별하는 방법에 대한 질문에 대해 설명드리겠습니다.
버퍼(Buffer): 버퍼의 위치는 주로 함수의 지역 변수 영역에 해당하며, 버퍼 오버플로우 공격을 시도할 때 채워지는 값들로 인해 인식할 수 있습니다. gdb에서는 각종 메모리 주소나 값을 통해 업데이트된 내용을 관찰할 수 있습니다.
SFP(Stack Frame Pointer): SFP는 보통 호출된 함수의 호출 이전 환경을 복원하기 위해 사용됩니다. SFP를 찾기 위해서는 스택 프레임의 시작점을 주의 깊게 살펴보십시오. gdb에서는 ‘info frame’ 명령을 통해 스택 프레임 정보를 확인할 수 있으며, 이때 해당 지점이 SFP가 됩니다.
RET(Return Address): 함수가 종료되어 호출된 위치로 돌아가야 하는 주소를 RET(Return Address)라 부릅니다. 이는 보통 버퍼 다음의 영역에 위치하며, ‘info registers’ 명령을 사용하여 eip/rip(Register Instruction Pointer)를 참고하여 콜 스택 상의 리턴 주소와 관련된 메모리를 볼 수 있습니다.
추가적인 유익한 학습 자원:
- 시스템 해킹 - 스택 메모리 이해하기
지금까지는 굉장히 기초적인 내용이지만, 실습을 통해 각각의 구성 요소가 실제로 어떻게 위치하고 변화하는지 탐험해보시길 권장 드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




