사실 메모리 구조 부분을 리버싱 분류로 넣어야 할까 고민했지만, 스택 프레임을 조사하면서 힙과 스택의 비교하기 위해서 조사했기에 다른 공부를 할 때 더 조사하더라도 현재는 리버싱으로 분류해놓았다.
메모리 상에서 힙 영역, 스택 영역
: 힙과 스택 영역이 서로 반대로 데이터를 채워 나가기 때문에 서로의 영역을 침범할 수 있음
1) Stack Overflow : 스택이 힙 영역을 침범함
2) Hip Overflow : 힙이 스택 영역을 침범함
왜 스택은 높은 주소에서 낮은 주소로 채워질까?
: 함수가 호출될 때 필요한 스택 메모리를 할당받는데, 이것은 함수 반환 후에 사용했던 해당 스택 메모리를 반환하여 전체적인 스택 메모리 상의 변경이 없어야 하기 때문이다.
-> 결과적으로 제일 중요한 커널 영역을 침범하지 않으면서 전체적인 영역을 일정하게 차지하기 위해.
이 내용은 메모리 구조와 함께 알아야하는 부분이기에 [System] 메모리 구조 (<-클릭) 다음 글을 보며 이해하는 것이 좋다.
< 힙과 비교한 스택의 차이 > 스택 : 빠른 액세스 힙 : 느린 액세스 |
'보안 공부 > Reversing' 카테고리의 다른 글
[리버싱] OllyDBG 단축키 모음 (1) | 2019.11.07 |
---|---|
[리버싱] 스택 프레임과 함수 프롤로그/에필로그 (0) | 2019.11.01 |
[리버싱] 리틀엔디안, 빅엔디안 (0) | 2019.11.01 |
[리버싱] CMP와 TEST 명령어 차이 (0) | 2019.11.01 |
[리버싱] MOV와 LEA의 차이 (5) | 2019.09.17 |
댓글