
🔍CTF pwn के लिए Heap विश्लेषण उपकरण
पॉनिंग एक कला है।
HeapInspect को हीप को और अधिक सुंदर बनाने के लिए डिज़ाइन किया गया है।
अब यह टूल nadbg का एक प्लगइन है। इसे आज़माएँ!
HeapShower (विस्तृत)PrettyPrinter (रंगीन, सारांश)इस टूल का एक त्वरित उपयोग।




आप इसे gdb प्लगइन के रूप में भी उपयोग कर सकते हैं, जब pwndbg या अन्य प्लगइन हीप का विश्लेषण करने में विफल हो जाते हैं तो यह बहुत उपयोगी है।
sed -i "1i source `pwd`/gdbscript.py" ~/.gdbinit # वैकल्पिक रूप से, आप उस पंक्ति को मैन्युअल रूप से जोड़ सकते हैं
नोट



उपयोग करना बहुत आसान है। मैं इसे बाद में एक पैकेज बनाऊँगा।
from heapinspect.core import *
hi = HeapInspector(1234) #यहाँ pid
hs = HeapShower(hi)
print(hs.fastbins)
print(hs.smallbins)
print(hs.largebins)
print(hs.unsortedbins)
print(hs.tcache_chunks)
hs.relative = 1 #रिलेटिव मोड, त्वरित झलक देखें
print(hs.fastbins)
sleep(10)
#अब मान लें कि हीप की स्थिति बदल गई है
hs.update() #रिफ्रेश करने के लिए इसका उपयोग करें
pp = PrettyPrinter(hi)
print(pp.all) #प्रिटी प्रिंटर
pp.update() #अपडेट करने के लिए इसका उपयोग करें
कुछ परीक्षण मामले हैं।
heapinspect/tests/ $ python test.py #यह इस टूल की जाँच के लिए सभी परीक्षण मामले चलाएगा।
......
......
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
विस्तृत डॉकस्ट्रिंग्स स्रोत कोड में लिखी गई हैं।
मैंने docs में एक sphinx दस्तावेज़ बनाया है। बस docs/build/html/index.html को अपने ब्राउज़र में खोलें।
दस्तावेज़ अपडेट।
कोई कार्यात्मक अपडेट नहीं।
पहला रिलीज़
अगला संस्करण एक रिलीज़ होगा।
यह एक स्थिर संस्करण नहीं है। मैं विभिन्न glibc के कारण बग्स को ठीक करने का प्रयास कर रहा हूँ। मुझे इसका परीक्षण करने के लिए मदद चाहिए।
अगले संस्करण में मल्टी libc समर्थन जोड़ा जाएगा। heapdiff और heap चेक बाद में जोड़े जाएँगे।
HeapShowerbins अब fd के बजाय bk से खोज करते हैं, जैसा कि glibc का तरीका हैHeapRecoder, मैं एक heapdiff बनाऊँगाsmallbins और largebinsfastbin प्रोटोटाइपunsortedbin प्रोटोटाइपbins प्रोटोटाइपtcache प्रोटोटाइपC_Struct जोड़ा गयाclass HeapInspector जोड़ा गयाarena की अधिक जानकारी पार्स करने का प्रयासproc_util में class Proc जोड़ा गयाtest.py में प्रायोगिक परीक्षण