unlink
Code
Grafische Erklärung
Überprüfen Sie diese großartige grafische Erklärung des Unlink-Prozesses:
Sicherheitsüberprüfungen
Überprüfen Sie, ob die angegebene Größe des Chunks mit der prev_size im nächsten Chunk übereinstimmt
Überprüfen Sie auch, dass
P->fd->bk == P
undP->bk->fw == P
Wenn der Chunk nicht klein ist, überprüfen Sie, dass
P->fd_nextsize->bk_nextsize == P
undP->bk_nextsize->fd_nextsize == P
Lecks
Ein unverknüpfter Chunk bereinigt die allokierten Adressen nicht, daher ist es möglich, beim Zugriff darauf einige interessante Adressen auszulesen:
Libc-Lecks:
Wenn P sich am Anfang der doppelt verketteten Liste befindet, zeigt
bk
aufmalloc_state
in libcWenn P sich am Ende der doppelt verketteten Liste befindet, zeigt
fd
aufmalloc_state
in libcWenn die doppelt verkettete Liste nur einen freien Chunk enthält, befindet sich P in der doppelt verketteten Liste, und sowohl
fd
als auchbk
können die Adresse innerhalb vonmalloc_state
auslesen.
Heap-Lecks:
Wenn P sich am Anfang der doppelt verketteten Liste befindet, zeigt
fd
auf einen verfügbaren Chunk im HeapWenn P sich am Ende der doppelt verketteten Liste befindet, zeigt
bk
auf einen verfügbaren Chunk im HeapWenn P sich in der doppelt verketteten Liste befindet, zeigen sowohl
fd
als auchbk
auf einen verfügbaren Chunk im Heap
Last updated