Daily Heap #1

juuun0·2022년 1월 7일
1

Heap-A-to-Z

목록 보기
1/10
post-thumbnail

Overview

본 시리즈는 glibc heap exploit을 공부하기 위해 glibc heap은 무엇이며, 어떻게 동작하는지에 대해 학습하고 정리하였습니다. 하루를 기준으로 학습한 내용을 정리하였기에 분량은 일정하지 않을 수 있습니다.


Heap

프로그램은 동작 시 다양한 data를 memory에 R/W하며 여러 동작을 수행합니다. Heap은 이러한 memory 공간으로 stack과 반대되는 점이 많습니다. 여기서는 Stack과 비교하기 보다 heap의 특징을 위주로 작성하겠습니다.

Management

Heap은 runtime 중 동적으로 공간을 할당하거나 해제할 수 있습니다. 여기서 동적이라고 함은 사용자로부터 크기를 입력받아 해당 크기에 맞는 공간을 확보하는 것을 대표적인 예시로 사용합니다.

이는 같은 프로그램을 실행하더라도 사용자가 어떤 동작을 수행하느냐에 따라 다른 결과를 도출할 수 있어야 함을 의미하기도 합니다. 따라서 이를 관리하기 위한 "Memory Allocator"를 통해 목적에 맞게 동작할 수 있도록 합니다.

Memory Allocator

어떤 memory allocator를 사용하는지는 프로그램의 목적과 구동 환경에 따라 차이가 있을 수 있습니다. Linux를 예시로 들어보면 초기에는 'dlmalloc' 이라는 allocator를 사용하였지만 요구 스펙이 발전됨에 따라 현재는 이를 fork하여 개량한 'ptmalloc2' 를 사용하고 있습니다.

이번 시리즈에서는 이 'ptmalloc2' 를 바탕으로 학습한 내용에 대해 기술할 것 입니다.

profile
To be

2개의 댓글

comment-user-thumbnail
2022년 3월 16일

(ง˙∇˙)ว

1개의 답글