
iOS/macOS अनुसंधान स्विस आर्मी नाइफ़
iOS/macOS अनुसंधान स्विस आर्मी नाइफ
ipsw Apple फर्मवेयर अनुसंधान और रिवर्स इंजीनियरिंग के लिए एक कमांड-लाइन टूलकिट है। IPSWs और OTAs डाउनलोड और अनपैक करें, Mach-O बाइनरीज़ और dyld साझा कैश का निरीक्षण करें, kernelcaches का विश्लेषण करें, और कनेक्टेड iOS डिवाइस के साथ काम करें।
Agent skill · Install · CLI examples · Documentation
यदि आप Claude Code, Codex, Gemini CLI, या किसी अन्य एजेंट में काम कर रहे हैं जो skills का समर्थन करता है, तो ipsw-skill से शुरू करें। यह एजेंट को फर्मवेयर निष्कर्षण, बाइनरी विश्लेषण, और Apple प्लेटफ़ॉर्म अनुसंधान के लिए कमांड संदर्भ और वर्कफ़्लो प्रदान करता है।
ipsw CLI इंस्टॉल करें, फिर skill जोड़ें:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
इसके बाद आप सरल भाषा में कोई कार्य माँग सकते हैं। उदाहरण के लिए:
iPhone 15 Pro के लिए नवीनतम IPSW डाउनलोड करें और उसका kernelcache निकालें।
इस dyld साझा कैश से SpringBoardServices के Objective-C हेडर डंप करें।
इन दो kernelcaches में KEXTs की तुलना करें।
skill README में व्यक्तिगत एजेंटों के लिए सेटअप निर्देश हैं, जिसमें Claude Code प्लगइन और Gemini CLI एक्सटेंशन शामिल हैं।
मेंटेनर के Homebrew tap में extras बिल्ड शामिल है:
brew install blacktop/tap/ipsw
Homebrew core फ़ॉर्मूला भी उपलब्ध है: brew install ipsw।
sudo snap install ipsw
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
आप GitHub Releases से बाइनरीज़ भी डाउनलोड कर सकते हैं। अन्य पैकेजों और वैकल्पिक निर्भरताओं के लिए इंस्टॉलेशन गाइड देखें। कुछ कमांड होस्ट OS या बिल्ड वेरिएंट पर निर्भर करते हैं; उदाहरण के लिए, Frida समर्थन का एक अलग बिल्ड है।
| क्षेत्र | उपकरण |
|---|---|
| फर्मवेयर | IPSWs, OTAs, macOS इंस्टॉलर, Xcode, और KDKs डाउनलोड करें; घटक निकालें और बिल्ड की तुलना करें |
| Mach-O | लोड कमांड, सिंबल, हस्ताक्षर, और एंटाइटलमेंट का निरीक्षण करें; ARM64 कोड को डिसअसेंबल करें |
| dyld साझा कैश | सिंबल और क्रॉस-रेफ़रेंस खोजें, dylibs निकालें, Objective-C हेडर डंप करें, और Swift मेटाडेटा का निरीक्षण करें |
| कर्नेल | KEXTs निकालें, syscalls और सिंबल का निरीक्षण करें, और kernelcaches की तुलना करें |
| फर्मवेयर घटक | IMG4 पार्स करें, AEA आर्काइव डिक्रिप्ट करें, और iBoot और कॉप्रोसेसर फर्मवेयर का निरीक्षण करें |
| डिवाइस | डिवाइस और ऐप्स की सूची बनाएं, AFC के साथ फ़ाइलें स्थानांतरित करें, लॉग कैप्चर करें, और डेवलपर इमेज माउंट करें |
| App Store Connect | प्रमाणपत्र, बंडल ID, डिवाइस, और प्रोविज़निंग प्रोफ़ाइल प्रबंधित करें |
| अनुसंधान | क्रैश लॉग सिंबोलिकेट करें, SSH पर डीबग करें, Frida के साथ ट्रेस करें, और LLM के साथ डीकंपाइल करें |
उदाहरण फ़ाइल पथों को अपने स्वयं के पथों से बदलें। ipsw --help चलाएँ या किसी भी सबकमांड के विकल्पों के लिए उसमें --help जोड़ें।
# Download the latest IPSW for iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest
# Inspect a local IPSW and extract its kernelcache
ipsw info /path/to/firmware.ipsw
ipsw extract --kernel /path/to/firmware.ipsw
# Compare two firmware builds
ipsw diff /path/to/old.ipsw /path/to/new.ipsw
ipsw dyld info /path/to/dyld_shared_cache_arm64e
# Extract Foundation for use in other tools
ipsw dyld extract /path/to/dyld_shared_cache_arm64e Foundation
# Dump headers directly from the cache
ipsw class-dump /path/to/dyld_shared_cache_arm64e SpringBoardServices --headers -o headers
Objective-C विश्लेषण के लिए कैश का सीधे उपयोग करें: निकाले गए dylibs अभी भी कैश में कहीं और संग्रहीत मेटाडेटा का संदर्भ दे सकते हैं।
# Select an architecture explicitly for universal binaries
ipsw macho info /path/to/binary --arch arm64e
ipsw macho disass /path/to/binary --arch arm64e --symbol _main
# Search a directory of binaries for an imported symbol
ipsw macho search /path/to/binaries --import 'CCCrypt'
# List KEXTs, then extract one by its full bundle ID
ipsw kernel kexts /path/to/kernelcache
ipsw kernel extract /path/to/kernelcache com.apple.driver.ASIOKit -o kexts
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
macho disass और dyld disass कमांड --dec के साथ डिसअसेंबली को कॉन्फ़िगर किए गए LLM प्रदाता को भेज सकते हैं। प्रदाता सेटअप, मॉडल चयन, और उदाहरणों के लिए डीकंपाइलर गाइड देखें।
CLI ~/.config/ipsw/config.yaml से YAML कॉन्फ़िगरेशन पढ़ता है; किसी अन्य फ़ाइल का चयन करने के लिए --config का उपयोग करें। सेटिंग्स और एनवायरनमेंट वेरिएबल्स के लिए config.example.yml और कॉन्फ़िगरेशन गाइड देखें।
स्क्रिप्ट के लिए, यूनिवर्सल बाइनरीज़ खोलते समय --arch के साथ आर्किटेक्चर चुनें और जब छोटा नाम अस्पष्ट हो तो पूर्ण dylib पथ का उपयोग करें। जो कमांड --json का समर्थन करते हैं, वे इसे अपने help में दस्तावेज़ित करते हैं।
अलग ipswd डेमन ऑटोमेशन के लिए एक REST API प्रदान करता है। API संदर्भ देखें।
बग की रिपोर्ट करते समय, ipsw version, आपके द्वारा चलाया गया कमांड, और प्रासंगिक फर्मवेयर बिल्ड या फ़ाइल प्रकार शामिल करें। लॉग और क्रैश रिपोर्ट से व्यक्तिगत जानकारी हटाएँ।
सोर्स से बिल्ड करने के लिए Go 1.26 या बाद का संस्करण और CGO के लिए एक C टूलचेन आवश्यक है:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
विकास और योगदान दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
Jonathan Levin को उनके टूल्स और iOS इंटरनल्स दस्तावेज़ीकरण के लिए, Apple सुरक्षा अनुसंधान समुदाय को, और उन सभी को धन्यवाद जो कोड, बग रिपोर्ट, और अनुसंधान में योगदान देते हैं।
MIT।