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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
ghidra_kernelcache — iOS kernelcache रिवर्स इंजीनियरिंग के लिए एक Ghidra फ्रेमवर्क | Kitploit
उपकरण/GitHubGitHub/0x36/ghidra_kernelcache
आईओएस सुरक्षारिवर्स इंजीनियरिंगबाइनरी विश्लेषणफर्मवेयर विश्लेषण
GitHub0x36/ghidra_kernelcache

ghidra_kernelcache

iOS kernelcache रिवर्स इंजीनियरिंग के लिए एक Ghidra फ्रेमवर्क

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

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

सभी देखें →

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

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

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

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

ghidra_kernelcache: रिवर्स इंजीनियरिंग के लिए एक Ghidra iOS kernelcache फ्रेमवर्क

यह फ्रेमवर्क Kernelcache रिवर्स इंजीनियरिंग में मेरे अनुभव का अंतिम उत्पाद है, मैं आमतौर पर कर्नेल और इसके एक्सटेंशन की मैन्युअल ऑडिट करके कमजोरियों की तलाश करता हूं और Ghidra में अधिकांश चीजों को स्वचालित कर दिया है जिन्हें मैं वास्तव में रिवर्सिंग की प्रक्रिया को तेज करने के लिए देखना चाहता था, और यह प्रभावी साबित हुआ है और बहुत समय बचाता है। यह फ्रेमवर्क iOS 12/13/14/15 और macOS 11/12 (दोनों kernelcache और एकल KEXT) पर काम करता है और इसे जनता के लिए इस इरादे से बनाया गया है कि लोग अपने स्वयं के वातावरण को तैयार करने के संघर्ष के बिना iOS कर्नेल पर शोध शुरू कर सकें। जैसा कि मेरा मानना है, यह फ्रेमवर्क (इसमें प्रदान किए गए टूलसेट और IOKit के कुछ बुनियादी ज्ञान के साथ) Kernelcache में हैकिंग शुरू करने के लिए पर्याप्त है।

यह फ्रेमवर्क पूरी तरह से Python में लिखा गया है, और इसे अन्य टूल बनाने के लिए बढ़ाया जा सकता है, यह कुछ बुनियादी API प्रदान करता है जिनका उपयोग आप लगभग किसी भी प्रोजेक्ट में कर सकते हैं और लंबे मैनुअल को पढ़ने से समय बचा सकते हैं, आपका utils/ निर्देशिका में मुख्य कार्यक्षमताओं को पढ़ने के लिए स्वागत है।

Ghidra Kernelcache का विश्लेषण करने में अच्छा है, लेकिन अन्य RE टूल की तरह, इसे कुछ मैन्युअल काम की आवश्यकता होती है, ghidra_kernelcache शुरुआत में और रिवर्स इंजीनियरिंग करते समय भी चीजों को ठीक करने के लिए एक अच्छा प्रवेश बिंदु प्रदान करता है, जिससे एक अच्छा डीकंपाइलर आउटपुट मिलता है।

@_bazad द्वारा IDAPro में एक समान प्रोजेक्ट है जिसे ida_kernelcache कहा जाता है जो IDA में कर्नेल इमेज के साथ काम करने वाले शोधकर्ताओं के लिए एक अच्छा प्रवेश बिंदु प्रदान करता है, मेरा फ्रेमवर्क Brandon के काम के समान दिखता है, और kernelcache के साथ काम करने की प्रक्रिया को कम दर्दनाक बनाने के लिए और अधिक सुविधाएं प्रदान करके आगे बढ़ता है।

विशेषताएं :

  • *OS kernelcache symbolication.
  • C++ क्लास पदानुक्रम पुनर्निर्माण और वर्चुअल टेबल.
  • वर्चुअल मेथड कॉल संदर्भ.
  • ::externalMethod() और ::getTargetAndMethodForIndex() दोनों के लिए बाहरी मेथड की डिस्पैच टेबल का ऑटो फिक्सिंग.
  • क्लास मेथड पर नेमस्पेस लागू करना.
  • फंक्शन आर्गुमेंट्स पर सिंबल नाम और टाइप प्रसार.
  • ज्ञात कर्नेल फंक्शनों के लिए फंक्शन सिग्नेचर लागू करना.
  • पुराने प्रोजेक्ट से नए प्रोजेक्ट में पुराने स्ट्रक्चर्स और क्लासेज आयात करना.

ये सुविधाएं अलग-अलग टूल के रूप में बनाई गई हैं जिन्हें की शॉर्टकट द्वारा या टूलबार में उनके आइकन पर क्लिक करके निष्पादित किया जा सकता है।

स्थापना

रिपॉजिटरी को क्लोन करें :```sh git clone https://github.com/0x36/ghidra_kernelcache.git

**महत्वपूर्ण नोट**: यह प्रोजेक्ट Ghidra 10.1_PUBLIC और 10.2_DEV पर परीक्षित किया गया है और पिछले संस्करणों के साथ संगत नहीं है।

*`Windows → Script Manager`* पर जाएँ, *`script Directory`* पर क्लिक करें, फिर *`ghidra_kernelcache`* को निर्देशिका पथ सूची में जोड़ें।
*`Windows → Script Manager`* पर जाएँ, *scripts* सूची में, *`iOS→kernel`* श्रेणी पर जाएँ और वहाँ देखे गए प्लगइन्स को चेक करें, वे GHIDRA टूलबार में दिखाई देंगे।

[logos/](https://github.com/0x36/ghidra_kernelcache/tree/master/logos) निर्देशिका में, आप प्रत्येक टूल के लिए अपने स्वयं के लोगो रख सकते हैं।

## iOS kernelcache प्रतीकीकरण

`ghidra_kernelcache` को पहले चरण में [iometa](https://github.com/Siguza/iometa/) (जिसे [@s1guza](https://twitter.com/s1guza) ने बनाया है) की आवश्यकता होती है, जो कर्नेल बाइनरी में C++ क्लास जानकारी प्रदान करने वाला एक शक्तिशाली उपकरण है। सबसे अच्छी बात यह है कि यह एक स्वतंत्र बाइनरी के रूप में काम करता है, इसलिए आउटपुट को आपके पसंदीदा RE फ्रेमवर्क में केवल पार्स करके आयात किया जा सकता है। मेरा फ्रेमवर्क iometa के आउटपुट को लेता है और प्रतीकीकरण और वर्चुअल तालिकाओं को ठीक करने के लिए पार्स करता है।

### उपयोग

कर्नेल को डीकंप्रेस करने के बाद, निम्नलिखित कमांड चलाएँ:```sh
$ iometa -n -A /tmp/kernel A10-legacy.txt > /tmp/kernel.txt
# if you want also to symbolicate using jtool2
$ jtool2 --analyze /tmp/kernel

Ghidra में kernelcache लोड करें, बैच आयात का उपयोग न करें, इसे Mach-O इमेज के रूप में लोड करें।
Kernelcache के लोड और स्वचालित विश्लेषण के बाद, टूलबार में दिखाए गए आइकन पर क्लिक करें या बस Meta-Shift-K दबाएँ, फिर iometa आउटपुट का पूरा पथ डालें जो हमारे मामले में /tmp/kernel.txt है।

यदि आप jtool2 प्रतीकों का उपयोग करना चाहते हैं, तो आप iOS→kernel श्रेणी में स्थित jsymbol.py का भी उपयोग कर सकते हैं।

iOS kernelcache API

पूर्ण API उदाहरण ghidra_kernelcache/kc.py में हैं।

→ यहाँ क्लास ऑब्जेक्ट्स के हेरफेर के कुछ उदाहरण हैं:```py from utils.helpers import * from utils.class import * from utils.iometa import ParseIOMeta

ff = "/Users/mg/ghidra_ios/kernel.txt" iom = ParseIOMeta(ff) Obj = iom.getObjects() kc = kernelCache(Obj)

symbolicate the kernel

kc.process_all_classes()

symbolicate the classes under com.apple.iokit.IOSurface bundle

kc.process_classes_for_bundle("com.apple.iokit.IOSurface")

symbolicate the classes under kernel bundle

kc.process_classes_for_bundle("kernel")

Process one class (including its parents)

kc.process_class("IOGraphicsAccelerator2")

Clears the content of the class structures (vtables are excluded)

kc.clear_class_structures()

Overwrite the old vtable structure definition and resymbolicate it again

kc.update_classes_vtable()

Reconstructing function call trees by enumerating all pac references and find their corresponding virtual method call

kc.explore_pac()

जैसा कि आप देख सकते हैं, आप kernelcache को पूरी तरह या आंशिक रूप से प्रतीकीकृत (symbolicate) कर सकते हैं, यदि आंशिक प्रतीकीकरण चुना गया है, तो `ghidra_kernelcache` आगे बढ़ने से पहले स्वचालित रूप से सभी वर्ग निर्भरताओं का निर्माण करेगा।
यदि आप पूरे kernelcache (पूर्ण प्रतीकीकरण) के विरुद्ध स्क्रिप्ट चलाते हैं, तो `ghidra_kernelcache` को कर्नेल इमेज का विश्लेषण करने में कई मिनट लगेंगे।

एक बार समाप्त होने पर, Ghidra निम्नलिखित प्रदान करेगा:

→ बुकमार्क फ़िल्टर में "iOS" नामक एक नई श्रेणी जोड़ी गई है:

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image1.png" alt="image1" width="200"/>
                    
                    
→ IOKit वर्ग वर्चुअल टेबल्स को बेहतर और तेज़ वर्चुअल टेबल खोज के लिए 'iOS' बुकमार्क में जोड़ा जाता है, आप केवल सर्च बार में अक्षर, शब्द या kext बंडल प्रदान करके kext या वर्ग खोज सकते हैं।

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image2.png" alt="image2"/>


→ वर्चुअल टेबल को ठीक करना: अज्ञात कोड को डिसएसेंबल/कंपाइल करना, नेमस्पेस ठीक करना, वर्ग विधियों को पुनः प्रतीकीकृत करना और प्रत्येक विधि पर फंक्शन डेफिनिशन लागू करना:

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image3.png" alt="image3"/>

→ वर्ग नेमस्पेस का निर्माण और प्रत्येक विधि को उसके संगत नेमस्पेस में रखना:

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image4.png" alt="image4"/>

→ वर्ग पदानुक्रम के सम्मान के साथ वर्ग संरचना बनाना:

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image5.png" alt="image5"/>

→ वर्ग vtable बनाना, और प्रत्येक विधि की अपनी विधि परिभाषा होती है जिससे डीकंपाइलेशन आउटपुट बेहतर होता है:

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image6.png" alt="image6"/>

पूर्ण कार्यान्वयन [`utils/class.py.`](https://github.com/0x36/ghidra_kernelcache/blob/master/utils/class.py) में पाया जा सकता है।

यहाँ `ghidra_kernelcache` का उपयोग करके प्रतीकीकरण से पहले/बाद के कुछ स्क्रीनशॉट हैं:

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image7.png" alt="image7"/>

<img src="https://raw.githubusercontent.com/0x36/ghidra_kernelcache/master/screenshots/image8.png" alt="image8"/>
टूल डाउनलोड करें