Windows Heap 탐구





해제시에 기본적으로 체크하고 크래시를 내는데 이미 문제가 발생한 후라 버그 찾기가 어려움




만약 6808byte를 할당한다면

16byte 얼라인을 맞추기위해 초과분의 8byte는
HEAP_ENTRY 구조체는 앞의 8byte를 안쓰니까 뒷 블럭의 HEAP_ENTRY 8byte에다가 쓴다.
질문. 8byte넘어가면 쓸 공간 없는데 만약 0xC사용하면 어떻게되는지?
debug버전일땐 CRT Heap이 붙는다


기본 48byte ++ 요청 메모리 + 4byte = 기본 52byte가 붙는다

OS에서 제공하는 기능

tail checking을 위한 0xab 16byte + 0x00 16byte(== padding) 추가


이 D는 0~12byte 왔다갔다함

debug에서는 어셈코드상에서 HeapAlloc : 6852요청 → 근데 실제 할당한 사이즈는
- 6912 : tail checking free checking 활성화
- 6864 : CRT Heap 활성화
- 릴리즈 경우 windbg → Tail Checking Free Checking 활성화

Posted 2024-12-12