본문 바로가기

강의

[NOOBHACK] sfp,ret의 대한 설명

포너블을 처음 접하신 분이라면 스택의 구조가 buffer+sfp+ret으로 이루어 졌다는 것 쯤은 알 것이다 buffer란 그냥 데이터가 저장되는 공간이라는 것을 생각하면 되고 sfp와 ret를 모르는 분들을 위해 설명하겠다

 

sfp(스택 베이스 값)

sfp란 4바이트의 크기를 가지고 있는 데이터다 이것이 어느 용도에 쓰이냐면

스택 주소값을 계산 할 때 현재 스택값의 기준을 잡을 때 필요한 프레임 포인터 값을 저장한다

즉, 데이터의 주소를 가리키는 데이터라고 생각하면  된다,

어셈블리어를 공부할때 함수를 시작할 때 마다 항상

push ebp

라는 명령어를 한번 씩은 봤을 텐데 이것이 바로 sfp의 값을 정하는 명령어라고 생각하면 된다

 

 

ret

ret는 return의 약자로 4바이트의 크기를 지니고 있으며 ret의 역할은 다음에 실행해야 할 메모리 주소를 가리키는 역할이다

buffer의 역할이 끝났다면 ret라는 데이터를 읽어 다시 실행 해야 할 메모리 주소로 돌아가야 하기 때문에 이를 위해선 ret가 필요하며 이 주소가 변조 될 시에 버퍼 오버플로우 라는 버그를 발생 시킨다

'강의' 카테고리의 다른 글

[NOOBHACK] 파일 시그니처(File Signatures)란?  (0) 2022.09.28
[NOOBHACK] IRC 프로토콜 이란?  (0) 2022.09.26
[NOOBHACK] visual studio 권한 설정  (0) 2022.08.29
[NOOBHACK] BOF란  (0) 2022.08.18
[NOOBHACK] 엔디안 설명  (0) 2022.08.16