0x.Heap Tutorial
-
0x01.Glibc Bins0x.Heap Tutorial 2018. 3. 6. 22:16
0x01. Glibc Bins 이번에 다뤄볼 주제는 glibc pcmalloc2의 빈에 대한 정보이다. bin은 free()된 청크들을 링크드 리스트 형태로 관리해준다. Malloc() 구조체 필드인 *fd와 *bk가 사용되는 이유가 바로 여기에 있는 것이다. 이 bin이라는 놈은 청크의 크기에 따라 다른 이름을 가진다. bin의 종류를 나열해보자면 Fast bin, Small bin, Large bin, Unsorted bin으로 나눌 수 있는데 크기, 개수, 관리방법에 차이가 있다. Fastbin패스트빈은 10개로 나뉘어 지는데 그 크기는 각각 32비트 기준으로 16, 24, 32, 40, 46, 56, 64, 72, 80, 88로 나뉜다. 64비트의 경우 최소 32바이트로 시작하여 128 바이트까지..
-
0x00. glibc - ptmalloc20x.Heap Tutorial 2018. 3. 5. 22:57
0x00. glibc - ptmalloc2 ptmalloc2는 Dong Lea가 최초로 만든 dlmalloc에 Wolfram Gloger가 UNIX의 멀티쓰레드 환경을 고려하여 수정한 버전이다.들어가기에 앞서 재밌는 사실을 알려주자면 malloc() 으로 동적 메모리를 할당할 경우에는 청크의 크기를 인자로 넘겨주는데 반해, 동적 메모리를 free() 해 줄 때는 청크의 크기를 인자로 받지 않는다. 왜 이런 일이 발생하는지는 malloc_chunk의 구조체를 보면 알 수 있다.struct malloc_chunk { INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free) */ INTERNAL_SIZE_T size; /* Size in bytes, in..