safe linking

포너블/Heap

Heap single list safe linking

glibc 2.32 부터 safe linking이라고 단일 연결 리스트의 포인터를 암호화 한다. 기본적으로 암호화와 복호화는 다음과 같다.enc = (pointer) xor (heap_add >> 12)pointer = (enc) xor (heap_add >> 12)여기서 heap_add 는 해당 포인터 자기 자신의 힙 주소이다. #include int main(){ char* ptr1 = malloc(0x30); char* ptr2 = malloc(0x30); free(ptr1); free(ptr2);}free 이후에 break를 걸고 메모리를 확인하면 다음과 같다.0x4056a5 를 복호화 하면 다음과 같다.pointer = 0x4056a5 xor 0..

K0n9
'safe linking' 태그의 글 목록