Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
shadow — jemalloc हीप शोषण फ्रेमवर्क | Kitploit
उपकरण/GitHubGitHub/census/shadow
मेमोरी फोरेंसिकशोषणरिवर्स इंजीनियरिंगडीबगर्सबाइनरी शोषण
GitHubcensus/shadow

shadow

jemalloc हीप शोषण फ्रेमवर्क

रिपॉजिटरी देखें
469714 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

shadow :: De Mysteriis Dom jemalloc

shadow एक jemalloc हीप शोषण फ्रेमवर्क है। इसे jemalloc को अपने हीप आवंटक के रूप में उपयोग करने वाले लक्ष्य एप्लिकेशन (चाहे वह Android का libc हो, Firefox, FreeBSD का libc, स्वतंत्र jemalloc, या और कुछ भी) से स्वतंत्र होने के लिए डिज़ाइन किया गया है। वर्तमान संस्करण (2.0) का निम्नलिखित लक्ष्यों के साथ व्यापक परीक्षण किया गया है:

  • Android 6-9 libc (ARM32 और ARM64)
  • Firefox (x86 और x86-64) Windows और Linux पर

टूल के स्रोत कोड के अलावा, इस रिपॉजिटरी में shadow का उपयोग करने के लिए Android उपयोगकर्ता-स्थान डीबगिंग वातावरण स्थापित करने पर दस्तावेज़ीकरण, shadow का उपयोग करके Android के jemalloc संरचनाओं का एक त्वरित अवलोकन, और double, unaligned और arbitrary free() बग Android के jemalloc पर कैसे व्यवहार करते हैं पर कुछ नोट्स शामिल हैं।

उपयोग

जब आप पहली बार कोई jemalloc-विशिष्ट कमांड जारी करते हैं, shadow सभी jemalloc मेटाडेटा को पार्स करता है जो इसे जानता है और उन्हें Python पिकल फ़ाइल में सहेजता है। बाद के कमांड तेजी से काम करने के लिए मेमोरी से मेटाडेटा को फिर से पार्स करने के बजाय इस पिकल फ़ाइल का उपयोग करते हैं।

जब आप जानते हैं कि jemalloc मेटाडेटा की स्थिति बदल गई है (उदाहरण के लिए जब आपने कुछ आवंटन किए हैं या कचरा संग्रह ट्रिगर किया है), तो मेटाडेटा को फिर से पार्स करने और पिकल फ़ाइल को फिर से बनाने के लिए jeparse कमांड का उपयोग करें।

Android स्थापना

पहला कदम अपने होस्ट मशीन पर pyrsistence स्थापित करना है।

रूटेड डिवाइस पर निम्नलिखित करें:

root@kitploit:~
host$ adb shell
phone$ su root
phone# ps -e

ps के आउटपुट से एक प्रक्रिया चुनें, उदाहरण के लिए com.google.process.gapps:

root@kitploit:~
...
u0_a19    4679  3214  1668980 69216 SyS_epoll_ 7fa5f41430 S com.google.process.gapps
...
phone$ cd /data/local/tmp
phone$ ./gdbserver64 :5039 --attach 4679

आप "bin" निर्देशिका में ARM32 और ARM64 के लिए GDB सर्वर बाइनरी पा सकते हैं। या, यदि आप हम पर भरोसा नहीं करते हैं, तो करें:

root@kitploit:~
host$ git clone http://android.googlesource.com/toolchain/gdb
host$ cd ./gdb/gdb-7.11
host$ mkdir build64; cd build64
host$ ../configure --program-prefix=aarch64-eabi-linux- --target=aarch64-eabi-linux --disable-werror
host$ make
host$ sudo make install

फिर होस्ट मशीन पर करें:

root@kitploit:~
host$ adb forward tcp:5039 tcp:5039
host$ aarch64-eabi-linux-gdb
(gdb) target remote :5039
(gdb) source /dir/with/shadow/gdb_driver.py
(gdb) jeparse -c /dir/with/shadow/cfg/android7_64.cfg
(gdb) jeruns -c

कभी-कभी GDB सर्वर सुनना बंद कर देता है यदि आप target remote :5039 कमांड जारी करने में बहुत अधिक समय लेते हैं। इसलिए यदि आप jeparse कमांड जारी करते समय अजीब त्रुटियां देखते हैं, तो शुरुआत से शुरू करें।

Windows/Firefox स्थापना

shadow Windows/Firefox के लिए निम्नलिखित के साथ परीक्षण किया गया है:

  • Windows 8.1 और 10 x86-64
  • Windows 7 SP1 x86 और x86-64
  • WinDBG के विभिन्न संस्करण
  • pykd version 0.3.2.8
  • Firefox के कई अलग-अलग रिलीज़ (x86-64 और x86 दोनों), नवीनतम स्थिर एक (55.0) सहित

नोट: यदि आप Firefox संस्करण 36.0 से पुराने के साथ काम करते हैं तो mozjs शाखा का उपयोग करें!

पहले आपको WinDBG को Mozilla के प्रतीक सर्वर के साथ सेटअप करना होगा। आपको pykd भी स्थापित करना होगा। फिर GitHub से क्लोन किए गए shadow निर्देशिका को किसी पथ पर कॉपी करें (जैसे C:\tmp\)।

आप फ़ाइल "windbg-init.cmd" में एक उदाहरण WinDBG प्रारंभिककरण स्क्रिप्ट भी पा सकते हैं। इसे C:\tmp\ पर रखें और WinDBG को windbg.exe -c "$$>< C:\tmp\windbg-init.cmd" से प्रारंभ करें।

अंत में, WinDBG के अंदर निम्नलिखित कमांड जारी करें:

root@kitploit:~
!load pykd.pyd
!py c:\\tmp\\shadow\\pykd_driver help

[shadow] De Mysteriis Dom jemalloc
[shadow] shadow v2.0
[shadow] Firefox v56.0a1 (x86-64)

[shadow] jemalloc-विशिष्ट कमांड:
[shadow]   jechunks                : सभी उपलब्ध चंकों पर जानकारी डंप करें
[shadow]   jearenas                : jemalloc एरेनास पर जानकारी डंप करें
[shadow]   jerun [-m] <address>    : एकल रन पर जानकारी डंप करें
[shadow]                                 -m : मैप कंटेंट पूर्वावलोकन मेटाडेटा पर
[shadow]   jeruns [-cs]            : jemalloc रन पर जानकारी डंप करें
[shadow]                                 -c : केवल वर्तमान रन
[shadow]                    -s <size class> : केवल दिए गए आकार वर्ग के लिए रन
[shadow]   jebins                  : jemalloc बिन्स पर जानकारी डंप करें
[shadow]   jebininfo               : बिन आकारों पर जानकारी डंप करें
[shadow]   jesize2bin              : आकार को बिन इंडेक्स में बदलें
[shadow]   jeregions <size class>  : उन सभी रनों को डंप करें जो दिए गए आकार वर्ग के क्षेत्रों को होस्ट करते हैं
[shadow]   jesearch [-cs] <hex>    : दिए गए हेक्स डीवर्ड के लिए हीप खोजें
[shadow]                                 -c : केवल वर्तमान रन
[shadow]                    -s <size class> : केवल दिए गए आकार के क्षेत्र
[shadow]   jeinfo <address>        : एक पते के लिए सभी उपलब्ध विवरण प्रदर्शित करें
[shadow]   jedump [path]           : हीप स्नैपशॉट को वर्तमान कार्यशील निर्देशिका या निर्दिष्ट पथ पर संग्रहीत करें
[shadow]   jestore [path]          : jedump उपनाम
[shadow]   jetcaches               : सभी tcache पर जानकारी डंप करें
[shadow]   jetcache [-bs] <tid>    : एकल tcache पर जानकारी डंप करें
[shadow]                    -b <bin index>  : केवल दिए गए बिन इंडेक्स के लिए जानकारी
[shadow]                    -s <size class> : केवल दिए गए आकार वर्ग के लिए जानकारी
[shadow]   jeparse [-crv]           : मेमोरी से jemalloc संरचनाओं को पार्स करें
[shadow]                   -c <config file> : jemalloc लक्ष्य कॉन्फ़िग फ़ाइल
[shadow]                                 -r : कंटेंट पूर्वावलोकन पढ़ें
[shadow]                                 -v : debug.log उत्पन्न करें
[shadow] Firefox-विशिष्ट (केवल pykd) कमांड:
[shadow]   nursery                 : SpiderMonkey GC नर्सरी पर जानकारी प्रदर्शित करें
[shadow]   symbol [-vjdx] <size>   : दिए गए आकार के सभी Firefox प्रतीक प्रदर्शित करें
[shadow]                                 -v : केवल vtable वाले वर्ग प्रतीक
[shadow]                                 -j : केवल SpiderMonkey से प्रतीक
[shadow]                                 -d : केवल DOM प्रतीक
[shadow]                                 -x : केवल non-SpiderMonkey प्रतीक
[shadow]   pa <address> [<length>] : ArrayObject की लंबाई संशोधित करें (डिफ़ॉल्ट नई लंबाई 0x666)
[shadow] Android-विशिष्ट कमांड:
[shadow]   jefreecheck [-bm]                : उन पतों को प्रदर्शित करें जिन्हें free() पर पास किया जा सकता है
[shadow]                     -b <bin index> : उन पतों को प्रदर्शित करें जो <bin index> के tcache बिन में मुक्त किए जाएंगे
[shadow]                          -m <name> : केवल इस विशिष्ट मॉड्यूल में खोजें
[shadow] सामान्य कमांड:
[shadow]   jeversion               : संस्करण संख्या आउटपुट करें
[shadow]   jehelp                  : यह सहायता संदेश

यदि आप उपरोक्त सहायता संदेश नहीं देखते हैं तो आपने कुछ गलत किया है ;)

प्रतीकों के लिए समर्थन

नोट: यह सुविधा वर्तमान में केवल Firefox/Windows के लिए है!

symbol कमांड आपको विशिष्ट आकारों के SpiderMonkey और DOM वर्गों (और संरचनाओं) की खोज करने की अनुमति देता है। यह तब उपयोगी होता है जब आप उपयोग-पश्चात-मुक्त बग का शोषण करने का प्रयास कर रहे होते हैं, या जब आप अधिलेखित/भ्रष्ट करने के लिए दिलचस्प पीड़ित वस्तुओं को स्थापित करना चाहते हैं।

shadow की मुख्य निर्देशिका में आप दो छोटी PDB पार्सिंग उपयोगिताएँ पा सकते हैं, symhex.py और pdbdy.py (तेज़)। उन्हें "xul.pdb" पर चलाएं ताकि Python पिकल फ़ाइल उत्पन्न हो जो shadow "pdb" निर्देशिका में ("pdb/xul-VERSION.pdb.pkl" के रूप में) अपेक्षा करता है। उन्हें चलाने से पहले सुनिश्चित करें कि आपने "msdia90.dll" पंजीकृत किया है; उदाहरण के लिए Windows 8.1 x86-64 पर आप ऐसा कर सकते हैं:

regsvr32 "c:\Program Files (x86)\Common Files\Microsoft Shared\VC\msdia90.dll"

एडमिनिस्ट्रेटर प्रॉम्प्ट से। आपको "comtypes" Python मॉड्यूल की भी आवश्यकता है; pip स्थापित करें और फिर pip install comtypes करें।

"xul.pdb" प्राप्त करने के लिए आपको WinDBG को Mozilla के प्रतीक सर्वर के साथ सेटअप करना होगा।

डिज़ाइन

unmask_jemalloc को शुरू में सभी तीन मुख्य डीबगर्स और प्लेटफार्मों (WinDBG, GDB और LLDB) का समर्थन करने के लिए एक मॉड्यूलर डिज़ाइन के साथ पुनः डिज़ाइन किया गया था। जब Firefox/Windows/WinDBG-विशिष्ट सुविधाएँ जोड़ी गईं तो टूल का नाम बदलकर shadow कर दिया गया।

नए डिज़ाइन का एक अवलोकन निम्नलिखित है (तीरों को "आयात" के रूप में पढ़ें)। लक्ष्य, स्पष्ट रूप से, सभी डीबगर-निर्भर कोड को *_driver और *_engine मॉड्यूल में रखना है।

root@kitploit:~
---------------------------------------------------------------------------------------

                                                    डीबगर-आवश्यक फ्रंटएंड (गोंद)


+------------+     +-------------+     +-------------+
| gdb_driver |     | lldb_driver |     | pykd_driver |
+------------+     +-------------+     +-------------+
      ^                   ^                   ^
      |                   |                   |
------+-------------------+-------------------+----------------------------------------
      |                   |                   |   
      |                   +--------+          |
      +------------------------    |    +-----+        कोर लॉजिक (डीबगर-अज्ञेय)
                              |    |    |
                              |    |    |
                           +-----------------+
  +------+                 |                 |
  |      |---------------> |      shadow     |<-----+
  | util |        +------> |                 |      |
  |      |        |        +-----------------+      |
  +------+        |          ^  ^     ^    ^        |
    | | |         |          |  |     |    |        |   +--------+
    | | |   +-----+----------+  |     +----+--------+---| symbol |
    | | |   |     |             |          |        |   +--------+
  +-+ | |   |  +----------+     |          |        |   +---------+
  |   | |   |  | jemalloc |     |          +--------+---| nursery |
  |   | |   |  +----------+     |                   |   +---------+
  |   | |   |   ^    ^   ^      |                   |
  |   | |   |   |    |   |      |                   |
  |   | |   |   |    |   +------+--------+          |
  |   | |   |   |    |          |        |          |
  |   | +---+---+----+----------+--------+-----+    |
  |   |     |   |    |          |        |     |    |
  |   +-----+---+----+----+     |        |     |    |
  |         |   |    |    |     |        |     |    |
--+---------+---+----+----+-----+--------+-----+----+----------------------------------
  |         |   |    |    |     |        |     |    |
  |         |   |    |    |     |        |     |    |       डीबगर-निर्भर API
  |         |   |    |    |     |        |     |    |
  |         |   |    |    |     |        |     |    |
  |         |   |    |    v     |        |     v    |
  |  +------------+  |  +-------------+  |  +-------------+
  +->| gdb_engine |  +--| lldb_engine |  +--| pykd_engine |
     +------------+     +-------------+     +-------------+
           ^                   ^                   ^
           |                   |                   |
       +---+         +---------+   +---------------+
       |             |             |
       |             |             |
-------+-------------+-------------+---------------------------------------------------
       |             |             |
       |             |             |                        डीबगर-प्रदत्त बैकएंड
       |             |             |
       |             |             |
    +-----+      +------+      +------+
    | gdb |      | lldb |      | pykd |
    +-----+      +------+      +------+

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