y0u_bat

[heap] how2heap first_fit.c 본문

System

[heap] how2heap first_fit.c

유뱃 2016. 10. 20. 12:56

how2heap first_fit.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char *a = malloc(512);
    char *b = malloc(256);
    char *c;

    strcpy(a,"this A");

    printf("[a]: %s %p\n",a,a);
    free(a);

    c = malloc(500);
    printf("[c]: %p\n",c);
    strcpy(c,"this C");
    printf("[c]: %s %p\n",c,c);
    printf("[a]: %s %p\n",a,a);

}

간단하게 설명하자면, malloc 같은경우 bin이라는 구조가 있고, 크기에 따라

large bin, small bin fastbin으로 나누어지고, fastbin 같은 경우, free한 사이즈랑 완전히 같은 사이즈를 할당할때 그부분이 재할당이 된다.

그리고 재할당을 할때 나머지 bin들은 free chunk중에 할당할려는 사이즈보다 높은 free chunk가 있으면 그곳으로 재할당을 한다.

Output:
[a]: this A 0x8087008
[c]: 0x8087008
[c]: this C 0x8087008
[a]: this C 0x8087008

프리된 a를 c에서 재할당 받는것을 볼 수 있으며, strcpy(c,"this c")를 하고, c와 free된 a를 보면 같은결과가 있는것을 볼 수 있다.

'System' 카테고리의 다른 글

Double Free Bug Vulnerability  (0) 2017.01.09
[heap] fastbin_dup_into_stack.c  (0) 2016.11.02
[heap] fastbin fd control  (2) 2016.10.07
QEMU-MIPS 환경 구축  (1) 2016.09.14
해킹캠프 13회 - equations 풀이  (0) 2016.02.28
Comments