완료됨
2*SIZE와 av->system_mem의 의미
free하려는 청크의 뒤의 청크의 사이즈를 2SIZE와 av->system_mem와 비교한다고 했는데
여기서 2SIZE와 av->system_mem의 담긴 값들은 각각 무엇이고 어떤 의미(내용??)를 가지고 있나요?
#시스템해킹
작성자 정보
답변
1
Karatus
워게임: 50
요것도 코드 보시면 나오는데 SIZE
는 chunk 할당 최소 크기를 말합니다. 즉 0x10(16)입니다.
그래서 header 크기(64bit 기준 0x10)까지 포함한 (2배 해주면 최소크기 되니까) 걸로 해제하려는 chunk size corruptuon 먼저 체크해주고,
반대로 chunk가 너무 클 수도 있지 않습니까? 그 size를 지정해놓은 변수가 바로 av(mstate 구조체의 인스턴스)->system_mem
입니다.
음.. 그리고 이건 확실치는 않은데 이렇게 사이즈 구분해놓고 체크하는 이유가 0x2000 같은 크기로 할당 요청하면 malloc이 할당 못해주고 mmap
을 호출하게 됩니다.(is_mmapped flag set)
그럼 이런 청크는 해제 후 제어를 해야 하는데 만약 이런걸 free로 해제해서 top chunk와 합쳐지게 되는 상황이 온다? 그럼 섹션이 침범될 수도 있기 때문에 munmap 함수같은 걸로 제어해야 해서이기 때문 아닐까요?
추측 관련 내용은 틀린 점 있으면 지적 바랍니다 ㅎㅎ