
Обновлённый инструмент дампа iOS на базе Frida с поддержкой последних API Frida 17.5.2
Современный инструмент для дешифровки памяти iOS-приложений, созданный для Frida 17.5.2+ с полной поддержкой iOS 14–16 и различных джейлбрейков.
Статус: ✅ Работает и протестировано — успешно выполняет дамп и дешифровку iOS-приложений с использованием Frida 17.5.2 на:
/cores/binpack/Оригинальный frida-ios-dump (последнее обновление — 2020) использует устаревшие API Frida, которые не работают с Frida 17.5.2. Этот инструмент написан с нуля на современных API Frida и специально протестирован с патчами Frida, совместимыми с Taurine.
paramiko (Python SSH-библиотека — устанавливается автоматически)iproxy (для USB-подключения через libimobiledevice)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.
# 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
Этот инструмент предназначен для работы с Frida-сервером, пропатченным под Taurine, который включает:
# 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: инструмент использует гибридный подход:
Это предотвращает ошибки «Is this a file manually extracted from the DYLD shared cache?» и «Objective-C Metadata looks mangled» на iOS 16.
Проверка дампа:
# 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:
Этот инструмент использует современные API Frida 17.5.2:
Если вы находите этот инструмент полезным или нуждаетесь в дальнейших обновлениях, поддержите проект — Boba нуждается:
Лицензия MIT — бесплатно для исследований в области безопасности и образовательных целей.
Этот инструмент предназначен для:
| Старый API (устаревший) | Новый API (современный) | Примечания |
|---|
Module.ensureInitialized() | Не требуется | ObjC инициализируется автоматически |
Module.findExportByName(null, 'name') | Module.findGlobalExportByName('name') | Глобальные экспорты |
Process.getModuleByName() | Process.findModuleByName() | Возвращает null, если не найдено |
| Ручной POSIX-ввод/вывод | new File(path, 'wb') | Встроенный File API |
Memory.writeByteArray() | file.write(arrayBuffer) | Прямая запись бинарных данных |