
नवीनतम Frida 17.5.2 APIs का समर्थन करने वाला एक अद्यतित Frida iOS डंप टूल
Frida 17.5.2+ के लिए निर्मित एक आधुनिक iOS एप्लिकेशन मेमोरी डिक्रिप्शन टूल, जिसमें iOS 14-16 और कई jailbreaks के लिए पूर्ण समर्थन है।
स्थिति: ✅ कार्यशील और परीक्षित - Frida 17.5.2 का उपयोग करके iOS ऐप्स को सफलतापूर्वक डंप और डिक्रिप्ट करता है:
/cores/binpack/ jailbreak पथों को संभालता हैमूल frida-ios-dump (अंतिम बार 2020 में अपडेट किया गया) deprecated Frida APIs का उपयोग करता है जो Frida 17.5.2 के साथ काम नहीं करतीं। यह टूल आधुनिक Frida APIs का उपयोग करके शुरू से बनाया गया है और विशेष रूप से Taurine-संगत Frida पैच के साथ परीक्षित किया गया है।
paramiko (Python SSH लाइब्रेरी - स्वचालित रूप से इंस्टॉल होती है)iproxy (libimobiledevice के माध्यम से USB कनेक्शन के लिए)will add my patch repo में देखें)cd /Users/username/git/frida-ios-dump-modern
# Create virtual environment with uv:
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install -r requirements.txt
# Make script executable
chmod +x dump.py
# Install libimobiledevice if needed
brew install libimobiledevice
# Start USB tunnel (in a separate terminal)
iproxy 2222 22
python dump.py -l
महत्वपूर्ण: Taurine jailbreak प्रतिबंधों के कारण डंप करने से पहले ऐप चालू होना चाहिए।
# 1. Launch the app on your device manually
# 2. Run the dumper:
python dump.py com.example.app
# With custom SSH password:
python dump.py com.example.app -P your_password
# With custom output directory:
python dump.py com.example.app -o /path/to/output
# 1. Open Ventusky on your iOS device
# 2. Run:
python dump.py com.in-meteo.ventusky -P mypassword
/tmp में लिखता हैयह iOS 16 पर क्यों काम करता है:
टूल निम्नलिखित बनाता है:
उदाहरण आउटपुट संरचना:
/tmp/Ventusky_decrypted/
├── Payload/
│ └── Ventusky.app/
│ ├── Ventusky (decrypted main binary)
│ ├── Frameworks/
│ │ └── *.framework (decrypted frameworks)
│ └── ... (other app resources)
└── Ventusky_decrypted.ipa
यह टूल Taurine-पैच किए गए Frida सर्वर के साथ काम करने के लिए डिज़ाइन किया गया है, जिसमें शामिल हैं:
# Check frida-server is running on device:
ssh -p 2222 root@localhost "ps aux | grep frida-server"
# Restart frida-server if needed:
ssh -p 2222 root@localhost "killall frida-server; frida-server &"
# List apps to find correct bundle ID:
python dump.py -l
# Launch the app manually on your device first
# This is required due to Taurine jailbreak restrictions
# Test SSH connection:
ssh -p 2222 root@localhost
# If password prompt works, use -P flag:
python dump.py com.example.app -P your_password
यदि पैचिंग के बाद iOS 16 पर मेटाडेटा त्रुटियाँ मिल रही हैं:
समस्या का निदान करें:
# Run diagnostic on dumped binary
./diagnose_ios16.sh /tmp/AppName_decrypted/Payload/AppName.app/AppName
# Compare with working iOS 14 binary
./diagnose_ios16.sh /path/to/working/ios14/binary
जाँचने योग्य मुख्य बातें:
टूल अब रनटाइम-विस्तारित मेमोरी क्षेत्रों को डंप करने से बचने के लिए डिस्क से मूल फाइल आकार पढ़ता है।
अच्छी खबर: टूल अब डंपिंग के दौरान स्वचालित रूप से cryptid=0 सेट करता है, इसलिए मैन्युअल पैचिंग की अब आवश्यकता नहीं है!
iOS 16 संगतता: टूल एक हाइब्रिड दृष्टिकोण का उपयोग करता है:
यह iOS 16 पर "Is this a file manually extracted from the DYLD shared cache?" और "Objective-C Metadata looks mangled" त्रुटियों को रोकता है।
डंप को सत्यापित करें:
# Check that cryptid is 0 (should be automatic now)
otool -l Payload/App.app/App | grep cryptid
# Should show: cryptid 0
# Check file has all segments
otool -l Payload/App.app/App | grep "segname __"
# Should show: __TEXT, __DATA_CONST, __DATA, __LINKEDIT
# Open in Hopper - should work without warnings!
मैन्युअल पैचिंग (लेगेसी - अब आवश्यक नहीं):
यदि किसी कारण से स्वचालित cryptid पैचिंग काम नहीं कर पाई:
# Check if patching needed
otool -l Payload/App.app/App | grep cryptid
# If shows cryptid 1, run:
python patch_cryptid.py Payload/App.app/App
mv Payload/App.app/App.patched Payload/App.app/App
अपेक्षित परिणाम:
तकनीकी विवरण - iOS 16 Chained Fixups:
यह टूल आधुनिक Frida 17.5.2 APIs का उपयोग करता है:
यदि आपको यह टूल उपयोगी लगता है या आगे के अपडेट चाहिएँ, तो परियोजना का समर्थन करने पर विचार करें — Boba को ज़रूरत है:
MIT लाइसेंस - सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए निःशुल्क।
यह टूल निम्नलिखित के लिए अभिप्रेत है:
| पुराना API (Deprecated) | नया API (आधुनिक) | टिप्पणियाँ |
|---|
Module.ensureInitialized() | आवश्यक नहीं | ObjC स्वतः इनिशियलाइज़्ड |
Module.findExportByName(null, 'name') | Module.findGlobalExportByName('name') | ग्लोबल एक्सपोर्ट्स |
Process.getModuleByName() | Process.findModuleByName() | नहीं मिलने पर null लौटाता है |
| मैन्युअल POSIX फाइल I/O | new File(path, 'wb') | बिल्ट-इन File API |
Memory.writeByteArray() | file.write(arrayBuffer) | प्रत्यक्ष बाइनरी राइट |