
🔍Инструмент анализа кучи для CTF pwn.
Pwnning — это искусство.
HeapInspect предназначен для того, чтобы сделать heap более красивым.
Теперь этот инструмент является плагином для nadbg. Попробуйте!
HeapShower (подробно)PrettyPrinter (цветной, сводка)Быстрое использование этого инструмента.




Вы также можете использовать его как плагин для gdb, что очень полезно, когда pwndbg или другие плагины не справляются с анализом кучи.
sed -i "1i source `pwd`/gdbscript.py" ~/.gdbinit # alternatively, you can add that line manually
Примечание



Довольно просто в использовании. Позже я оформлю это в пакет.
from heapinspect.core import *
hi = HeapInspector(1234) #pid here
hs = HeapShower(hi)
print(hs.fastbins)
print(hs.smallbins)
print(hs.largebins)
print(hs.unsortedbins)
print(hs.tcache_chunks)
hs.relative = 1 #relative mode, check Quick shot
print(hs.fastbins)
sleep(10)
#now assume that the heap state has changed
hs.update() #use this to refresh
pp = PrettyPrinter(hi)
print(pp.all) #pretty printer
pp.update() #use this to update
Есть несколько тестовых примеров.
heapinspect/tests/ $ python test.py #this will run all test cases for you to check this tool.
......
......
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
Подробные строки документации вписаны в исходный код.
Я создал документацию Sphinx в папке docs. Просто откройте docs/build/html/index.html в вашем браузере.
Обновление документации.
Не функциональное обновление.
Первый релиз
Следующая версия будет релизом.
Это не стабильная версия. Я пытаюсь исправить ошибки, связанные с разными версиями glibc. Мне нужна помощь в тестировании.
Следующая версия добавит поддержку нескольких libc. Heapdiff и проверка кучи будут добавлены позже.
HeapShowerbins теперь ищут по bk вместо fd, как в glibcHeapRecoder, я сделаю heapdiffsmallbins и largebinsfastbinunsortedbinbinstcacheC_Struct для работы со структурами Cclass HeapInspectorarenaclass Proc в proc_utiltest.py