Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
libtalloc — libtalloc एक python स्क्रिप्ट है जो GDB के साथ उपयोग के लिए है, जिसका उपयोग "trivial allocator" (talloc) का विश्लेषण करने के लिए किया जा सकता है। | Kitploit
उपकरण/GitHubGitHub/nccgroup/libtalloc
मेमोरी फोरेंसिकभेद्यता विश्लेषणरिवर्स इंजीनियरिंगडीबगर्सबाइनरी विश्लेषण
GitHubnccgroup/libtalloc

libtalloc

libtalloc एक python स्क्रिप्ट है जो GDB के साथ उपयोग के लिए है, जिसका उपयोग "trivial allocator" (talloc) का विश्लेषण करने के लिए किया जा सकता है।

रिपॉजिटरी देखें
1751811 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

libtalloc

libtalloc एक python स्क्रिप्ट है जो GDB के साथ उपयोग के लिए है और इसका उपयोग "ट्रिवियल एलोकेटर" (talloc) का विश्लेषण करने के लिए किया जा सकता है। talloc के बारे में एक परिचय यहाँ पाया जा सकता है:

https://talloc.samba.org/talloc/doc/html/index.html

libtalloc, unmask_jemalloc और libheap जैसे हीप विश्लेषण के लिए बनाई गई अन्य gdb python स्क्रिप्ट्स से प्रेरित था। कुछ बुनियादी कार्यक्षमता इन प्रोजेक्ट्स के समान है।

https://github.com/cloudburst/libheap

https://github.com/argp/unmask_jemalloc

कृपया ध्यान दें कि मैं python गुरु नहीं हूँ और कोड की गुणवत्ता इसी को दर्शाती है। अगर आपको कुछ ऐसा दिखे जो आपको अप्रिय लगे, तो बेझिझक पैच भेजें या मुझे कुछ सुझाव दें। सभी प्रतिक्रिया का स्वागत है।

परीक्षण

libtalloc का परीक्षण talloc के विभिन्न 2.x रिलीज़ों पर किया गया है और यह संस्करणों के बीच विभिन्न संरचनात्मक अंतरों को दूर करने के प्रयास हेतु गतिशील संस्करण पहचान का समर्थन करता है। इसका परीक्षण 32-bit और 64-bit पर किया गया है, हालाँकि पूरी तरह से नहीं, इसलिए यदि यह कभी-कभी विफल हो जाए तो आश्चर्य न करें।

इसका कुछ हद तक x86 और x64 पर परीक्षण किया गया है:

  • 2.0.7
  • 2.0.8
  • 2.1.0
  • 2.1.1

यदि आप इसे किसी अन्य संस्करण पर परीक्षण करते हैं, तो कृपया मुझे बताएं कि यह काम किया, या क्या टूटा, और मैं उसके अनुसार इसे और/या दस्तावेज़ों को अपडेट करने का प्रयास करूंगा।

स्थापना

स्क्रिप्ट को केवल python समर्थन वाले अपेक्षाकृत आधुनिक GDB संस्करण की आवश्यकता होती है।

कुछ LTS डिस्ट्रोस, जैसे Ubuntu 12.04, अभी भी python 2.7 के साथ GDB उपयोग करते हैं, जबकि 14.04 जैसे नए संस्करण python 3.0 उपयोग करते हैं। मैंने इस स्क्रिप्ट को दोनों के साथ काम करने के लिए बनाने की कोशिश की है, इसलिए आपको केवल यह करना होगा:

(gdb) source libtalloc.py

उपयोग

अधिकांश कार्यक्षमता unmask_jemalloc के दृष्टिकोण पर आधारित है, जहाँ जटिल स्विचों के सेट के बजाय एक अलग GDB कमांड प्रदान की जाती है।

कई विधियाँ विशेष रूप से talloc लाइब्रेरी C फ़ंक्शनों की नकल करने के लिए डिज़ाइन की गई हैं, ताकि उन लोगों को मदद मिल सके जो पहले से लाइब्रेरी से परिचित हैं और libtalloc को विस्तारित करने का प्रयास कर रहे हैं।

कमांड्स की पूरी सूची देखने के लिए आप tchelp कमांड जारी कर सकते हैं:

(gdb) tchelp
[libtalloc] talloc commands for gdb
[libtalloc] tcchunk -v -x <addr>  : show chunk contents (-v for verbose, -x for data dump)
[libtalloc] tcvalidate -a <addr>  : validate chunk (-a for whole heap)
[libtalloc] tcsearch <addr>       : search heap for hex value or address
[libtalloc] tcwalk <func>         : walk whole heap calling func on every chunk
[libtalloc] tcreport <addr>       : give talloc_report_full() info on memory context
[libtalloc] tcdump -s <addr>      : dump chunks linked to memory context (-s for sorted by addr)
[libtalloc] tcparents <addr>      : show all parents of chunk
[libtalloc] tcchildren <addr>     : show all children of chunk
[libtalloc] tcinfo                : show information known about heap
[libtalloc] tcprobe               : try to collect information about talloc version
[libtalloc] tchelp                : this help message

गतिशील संस्करण जांच

सबसे महत्वपूर्ण कमांड्स में से एक tcprobe है। यह पता लगाने के लिए चलाया जाना चाहिए कि वास्तव में talloc का कौन सा संस्करण स्थापित है। विभिन्न संस्करणों के लिए संरचना लेआउट काफी भिन्न हो सकते हैं, इसलिए अधिकांश फ़ंक्शनों के काम करने हेतु संस्करण का पता होना चाहिए।

यदि कमांड काम करती है, तो इसे आपको पहचाना गया संस्करण बताना चाहिए:

(gdb) tcprobe
Version: 2.1.1 
File: /usr/lib/libtalloc.so.2.1.1

मेटा जानकारी

tcinfo कमांड का उद्देश्य हीप के बारे में एकत्रित अधिक से अधिक जानकारी दिखाना है, जैसे tcprobe से प्राप्त जानकारी, null_context संरचना यदि यह मिली हो, और भी बहुत कुछ। फिलहाल यह केवल संस्करण दिखाता है और यह कि null_context सेट है या नहीं। null_context उन अधिकांश फ़ंक्शनों के लिए आवश्यक है जो वास्तविक पदानुक्रम को ट्रैवर्स करते हैं, और इसे खोजने के लिए tchunk जैसी अधिकांश अन्य कार्यक्षमताएं इसे स्वतः खोजने का प्रयास करेंगी।

tcprobe चलाने के बाद लेकिन tchunk वास्तव में उपयोग करने से पहले:

(gdb) tcinfo [libtalloc] null_context not yet found yet [libtalloc] Version: 2.0.7 [libtalloc] File: /usr/lib/i386-linux-gnu/libtalloc.so.2.0.7

फिर एक चंक का विश्लेषण करने के बाद, इस प्रकार:

(gdb) tcchunk 0xb94a52b0 WARNING: 0xb94a52b0 not a talloc_chunk. Assuming ptr to chunk data 0xb94a5280 sz:0x0000003c, flags:...., name:struct tevent_context

आप बाद में tcinfo का उपयोग करके पुष्टि कर सकते हैं कि यह मिल गया था।

(gdb) tcinfo [libtalloc] null_context: 0xb94a5028 [libtalloc] Version: 2.0.7 [libtalloc] File: /usr/lib/i386-linux-gnu/libtalloc.so.2.0.7

अब जब null_context सेट हो गया है, तो आप अन्य कमांड्स चला सकते हैं जो सामान्यतः शिकायत करती थीं कि यह सेट नहीं है, जैसे tcsearch कमांड।

चंक विश्लेषण

tcchunk आपको चंक का सारांश, प्रत्येक फ़ील्ड का अधिक विस्तृत आउटपुट, या आस-पास के हर चंक के बारे में अत्यंत विस्तृत जानकारी प्रदान कर सकता है।

नोट: tcchunk के बारे में एक महत्वपूर्ण बात यह है कि यह आंतरिक रूप से tc_chunk() विधि का उपयोग करता है, जो चंक एड्रेस को पास करते समय हुई त्रुटियों को सुधारने का प्रयास करती है। विशेष रूप से यदि आप चंक डेटा का एड्रेस पास करते हैं, और यदि इसे अपेक्षित talloc magic नहीं मिलता है, तो यह मेमोरी में थोड़ा पहले एक वैध चंक हेडर की तलाश करेगा। यह दूषित परिदृश्यों में आपको परेशान कर सकता है, इसलिए हमेशा सुनिश्चित करें कि आप स्पष्ट एड्रेस पास कर रहे हैं, जब तक कि आप सतही विश्लेषण नहीं कर रहे हों।

सारांश आउटपुट:

(gdb) tcchunk 0x80a13c88
0x80a13c88 sz:0x00000020, flags:..p., name:struct netr_ServerPasswordSet

सारांश आउटपुट में चंकों के लिए निम्नलिखित लीजेंड है:

p - Member of a pool (POOLMEM flag)
P - Chunk is a pool (POOL flag)
F - Chunk is free (FREE flag)
L - Chunk is looped (LOOP flag)

विस्तृत आउटपुट:

(gdb) tcchunk -v 0x80a13c88
struct talloc_chunk @ 0x80a13c88 {
next         = 0x0
prev         = 0x80a140c8
parent       = 0x0
child        = 0x80a14088
refs         = 0x0
destructor   = 0x0
name         = 0x807d9f2f (struct netr_ServerPasswordSet)
size         = 0x20
flags        = 0xe8150c78 (POOLMEM)
limit        = 0x0
pool         = 0x80a13248

सत्यापन

talloc चंकों में कुछ magic मान होते हैं जिनका उपयोग यह सत्यापित करने के लिए किया जा सकता है कि वे वैध हैं या नहीं। tcvalidate कमांड एक चंक का विश्लेषण करेगी ताकि यह सुनिश्चित हो सके कि चंक magic अपेक्षित है। इसके अतिरिक्त, यह अन्य सभी पॉइंटर सदस्यों का विश्लेषण करती है ताकि यह सुनिश्चित हो सके कि वे वास्तव में मेमोरी रेंज (जैसा कि gdb को ज्ञात है) के भीतर आते हैं, और आकार वैध है या नहीं।

(gdb) tcvalidate 0x80a13c88
Chunk header is valid

हम एक मान को संशोधित करने के लिए एक अंतर्निहित विधि का उपयोग करेंगे ताकि यह दिखाया जा सके कि यह कैसे विफल हो सकता है:

(gdb) python set_destructor(tc_chunk(0x80a13c88), 0x41414141)
(gdb) tcchunk -v 0x80a13c88
struct talloc_chunk @ 0x80a13c88 {
next         = 0x0
prev         = 0x80a140c8
parent       = 0x0
child        = 0x80a14088
refs         = 0x0
destructor   = 0x41414141
name         = 0x807d9f2f (struct netr_ServerPasswordSet)
size         = 0x20
flags        = 0xe8150c78 (POOLMEM)
limit        = 0x0
pool         = 0x80a13248
(gdb) tcvalidate 0x80a13c88
Chunk header is invalid:
0x80a13c88: Chunk has bad destructor pointer 0x41414141

पैरेंट ढूँढना

tcparents का उपयोग दिए गए चंक के सभी पैरेंट्स देखने के लिए किया जा सकता है:

(gdb) tcparents 0x80a13c88
0x809f8300: null_context
  0x80a08660: TALLOC_CTX *
    0x809f8370: talloc_new: ../lib/util/talloc_stack.c:147
      0x809fb680: talloc_new: ../lib/util/talloc_stack.c:147
        0x80a13258: UNNAMED
          0x80a13c58: talloc_new: ../lib/util/talloc_stack.c:147
            0x80a13c88: struct netr_ServerPasswordSet

चिल्ड्रन ढूँढना

tcchildren का उपयोग दिए गए चंक के सभी चिल्ड्रन (और नाती-पोते आदि) देखने के लिए किया जा सकता है:

टूल डाउनलोड करें