
🔍 Herramienta de análisis de heap para CTF pwn.
Pwnning es un arte.
HeapInspect está diseñado para hacer que el heap sea mucho más bonito.
Ahora esta herramienta es un plugin de nadbg. ¡Pruébalo!
HeapShower (detallado)PrettyPrinter (colorido, resumen)Un uso rápido de esta herramienta.




También puedes usarlo como un plugin de gdb, muy útil cuando pwndbg u otros plugins fallan al analizar el heap.
sed -i "1i source `pwd`/gdbscript.py" ~/.gdbinit # alternativamente, puedes añadir esa línea manualmente
Nota



Bastante fácil de usar. Lo convertiré en un paquete más adelante.
from heapinspect.core import *
hi = HeapInspector(1234) #pid aquí
hs = HeapShower(hi)
print(hs.fastbins)
print(hs.smallbins)
print(hs.largebins)
print(hs.unsortedbins)
print(hs.tcache_chunks)
hs.relative = 1 #modo relativo, consulta Inicio rápido
print(hs.fastbins)
sleep(10)
#ahora asume que el estado del heap ha cambiado
hs.update() #usa esto para refrescar
pp = PrettyPrinter(hi)
print(pp.all) #impresión bonita
pp.update() #usa esto para actualizar
Hay algunos casos de prueba.
heapinspect/tests/ $ python test.py #esto ejecutará todos los casos de prueba para que verifiques esta herramienta.
......
......
test case unsortedbins64 at test/testcases/libc-2.27/64bit
pid:6704
========================= fastbins =========================
========================= unsortedbins =========================
chunk(0x7f9aae2e6720): prev_size=0x0 size=0xb1 fd=0x7f9aacdfbca0 bk=0x7f9aae2e6880
chunk(0x7f9aae2e6880): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6720 bk=0x7f9aacdfbca0
========================= smallbins =========================
========================= largebins =========================
========================= tcache =========================
tcache[9]:
chunk(0x7f9aae2e6670): prev_size=0x0 size=0xb1 fd=0x7f9aae2e65d0 bk=0x0
chunk(0x7f9aae2e65c0): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6520 bk=0x0
chunk(0x7f9aae2e6510): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6470 bk=0x0
chunk(0x7f9aae2e6460): prev_size=0x0 size=0xb1 fd=0x7f9aae2e63c0 bk=0x0
chunk(0x7f9aae2e63b0): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6310 bk=0x0
chunk(0x7f9aae2e6300): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6260 bk=0x0
chunk(0x7f9aae2e6250): prev_size=0x0 size=0xb1 fd=0x0 bk=0x0
Se han escrito docstrings detallados en el código fuente.
He construido una documentación sphinx en docs. Simplemente abre docs/build/html/index.html con tu navegador.
actualización de documentación.
no es una actualización funcional.
primera versión
la siguiente versión será un lanzamiento.
esta no es una versión estable. estoy intentando corregir errores debido a diferentes glibc. necesito ayuda para probar esto.
la siguiente versión añadirá soporte multi libc. heapdiff y heap check se añadirán más adelante.
HeapShowerbins ahora busca desde bk en lugar de fd, como es la manera de glibcHeapRecoder, haré un heapdiffsmallbins y largebinsfastbinunsortedbinbinstcacheC_Struct para manejar estructuras cclass HeapInspectorarenaclass Proc en proc_utiltest.py