네
네 ?
네 네 그 중 하나를 할당하고 다른 부분은 무료
목록에 돌려놓는 거죠 ,
네 '재봉하는 방법은 비교적 간단합니다' 예를 들어
0x100 사이즈로 달라고 했는데 우리 경기장에
있는 건 0x300 사이즈뿐이에요 ? 네
네 말로크가 무료 목록에서 0x300을 빼서 0x100을 분리하고 소위
'레지더'를 무체중인 빈 머리에 꽂아 0x100을 할당해요
네 '언제'는 좀 더 복잡합니다 '말록 서유차트의 세 지점 중 하나에서' 다시 나누기를 할 수 있습니다
그렇습니다 이 강의 1부에 다루지 않은 라지빈에서 배정될
때 발생하죠 '빈맵' 검색에서도 발생합니다 PDF 파일에 나와 있어요 binmap
검색이 맨 위 용량이 사용되기 전 마지막 할당 경로죠
빈맵이에요 빈맵은 비트맵을 놀린 건데 말 그대로 어느 경기장의 상자가 차 있는지
나타내는 거죠
5월 네 빈 맵을 찾는 동안 말록이 빈 통에서 비트를 꺼내려고 할 때만 비트가 깨끗해진다는
뜻이죠 ? 네
네 빈맵은 아레나 레이아웃 다이어그램에서 보듯이 아레나의 끝부분에 위치합니다 빈맵은 아레나의 끝부분에 위치합니다
네 네 ? 네
마지막 한 덩어리가
통에 남아요
네 네 '지친'다고 합니다 '지친'
상태죠
네 0x80 크기의 경기장을 원했지만
경기장에 0x90밖에 없다면 말로크가 그 부분을 다 배기하고 0x90 전체를 할당받겠죠
예상했던 크기의 덩어리가 안 나오는 드문 경우죠
세 번째 네 binmap 검색에서 남은 음식이 있고 요청 크기가 스몰빈
범위 내에 있다면 아레나의 '마지막 남은
음식' 필드가 설정됩니다 ,
네 Arena 레이아웃 다이어그램에서 마지막_나머지 필드가 보입니다 상단 청크와 흐트러진 bin
사이 fd요
마지막 네 안
돼요 네 작은 덩어리를 찾는 동안 만약 수색이
무체계빈의 마지막
덩어리를 찾으면 그 덩어리가 마지막 남은 것이기도 하고 그럼 그 덩어리가 다시
남아 마지막_떨어진 필드가 그에
따라 업데이트됩니다 ???
네 이상하죠 덩어리는 마지막 남은 것에서 지치지 않습니다 덩어리를 분류하고
다음 빈 맵으로 조사해도 같은 결과를 보게 되겠지만요 , 빈 맵
멀록의 실험대를 다시 한번 살펴보겠습니다
pwntools 템플릿을 복사해 편집기에서 여세요
덩어리 A와 B를 요청한 선과 덩어리
A를 풀어준 선은 남겨두고 나머지는 버려요
청크 A의 크기를 0x1f8로 바꾸면 0x200 크기의 청크가 되죠
기억하시죠? 원하는 덩어리에서 8을 빼면 적당한 요청 크기를 얻을 수
있습니다
스크립트를 실행합니다 디버깅 옵션 두
개를 사용합니다 'vis'로 정보를 분석합니다 0x200 크기의 혼란스러운 정보가 있습니다 , 데이터베이스에
있습니다
'계속'
'프로그램 창'으로 넘어가서 요청 사이즈를 0xf8로 설정해 0x100을 할당합니다
다시 광고로 돌아가서 다시 휴식합니다
'vis'에 따르면 0x200 크기의 덩어리가 반으로 나뉘었거나 우리 요청을 위해 남은 게 있습니다
네 나머지 반은 주소로 봤을 때 우리가 원하던 0x100 사이즈 덩어리가 됐고 나머지 반은 다시
무정돈 상태로 연결되어 과정의 마지막 잔재가 됐어요 ? 네
네 혈중 200%의 피가 정화되지 않은 혈관에서 바로 남은 것 같지만
사실은 그렇지 않아요
우선 0x200 스몰빈으로 분류했고
빈 맵을 통해 다시 분류했습니다
네 만약 우리가 0x80 크기의 조각을 요청하면 0x100은 무체계 빈에서
바로 남아요 그게 마지막이거든요 ?
어쨌든 결과는 똑같습니다
재편성은 복잡한 과정은 아니지만 언제 발생할 수 있는지 기억할 게 많습니다
다음 도전은 이진법으로 진행할 겁니다 '말록은 맞는 청동이를 찾지
못할 경우' '공짜 청동으로 분리합니다' 네 다시 기억을 되살리고 싶다면 '핸랩 PDF에 다시
쓰기' 항목이 있어요 그리고 다시 쓰기 과정을 따라가려면 맬록
테스트베드를 사용하세요 , 아셨죠?
명심하세요 수업에 나오는 글록의 각 버전에는 말록 소스 코드가 들어 있어요
그 기능에 중단점을 설정하면 소스를 추적해서 말록을 통과한 경로를 알
수 있죠 요청하신 대로 하겠습니다
네 기초 재봉에 익숙해졌으면 마지막 2진법 과제를 할 준비가 된 거예요
다음 영상에서
만나요 , 여러분