Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
frida-ios-dump-modern — Обновлённый инструмент дампа iOS на базе Frida с поддержкой последних API Frida 17.5.2 | Kitploit
Инструменты/GitHubGitHub/jwalker/frida-ios-dump-modern
Безопасность iOSПентестинг мобильных приложенийОбратная инженерияАнализ вредоносных программМобильная безопасностьАнализ Бинарных Файлов
GitHubjwalker/frida-ios-dump-modern

frida-ios-dump-modern

Обновлённый инструмент дампа iOS на базе Frida с поддержкой последних API Frida 17.5.2

Репозиторий
97 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Современный дампер IPA для iOS

Современный инструмент для дешифровки памяти iOS-приложений, созданный для Frida 17.5.2+ с полной поддержкой iOS 14–16 и различных джейлбрейков.

Статус: ✅ Работает и протестировано — успешно выполняет дамп и дешифровку iOS-приложений с использованием Frida 17.5.2 на:

  • iOS 14.7.1 + джейлбрейк Taurine (iPad mini 5)
  • iOS 16.7.12 + джейлбрейк palera1n (iPhone 8)

Возможности

  • ✅ Совместим с Frida 17.5.2+ (использует NativePointer.readByteArray)
  • ✅ Работает с джейлбрейком Taurine (iOS 14.7.1)
  • ✅ Работает с джейлбрейком palera1n (iOS 16.7.12)
  • ✅ Обрабатывает пути джейлбрейка palera1n: /cores/binpack/
  • ✅ Быстрая дешифровка с помощью дампа памяти и ручной правки cryptid
  • ✅ Без устаревших API-вызовов
  • ✅ Чистый, поддерживаемый код
  • ✅ Автоматическая упаковка IPA
  • ✅ Использует Python paramiko (не требуются внешние инструменты)
  • ✅ Подробный отчёт о ходе выполнения

Зачем этот инструмент?

Оригинальный frida-ios-dump (последнее обновление — 2020) использует устаревшие API Frida, которые не работают с Frida 17.5.2. Этот инструмент написан с нуля на современных API Frida и специально протестирован с патчами Frida, совместимыми с Taurine.

Требования

Требования к macOS/хосту

  • Python 3.8+
  • Frida 17.5.2+
  • paramiko (Python SSH-библиотека — устанавливается автоматически)
  • iproxy (для USB-подключения через libimobiledevice)

Требования к iOS-устройству

  • Взломанное iOS-устройство (протестировано на iOS 14.7.1 + Taurine)
  • Запущенный пропатченный frida-server (см. патчи Frida в will add my patch repo)
  • Включённый SSH-доступ

Установка

root@kitploit:~
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

Настройка USB-подключения

root@kitploit:~
# Install libimobiledevice if needed
brew install libimobiledevice

# Start USB tunnel (in a separate terminal)
iproxy 2222 22

Использование

1. Список установленных приложений

root@kitploit:~
python dump.py -l

2. Создание дампа приложения

Важно: Приложение должно быть запущено перед созданием дампа из-за ограничений джейлбрейка Taurine.

root@kitploit:~
# 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

3. Пример: дамп Ventusky

root@kitploit:~
# 1. Open Ventusky on your iOS device
# 2. Run:
python dump.py com.in-meteo.ventusky -P mypassword

Как это работает

Подход, совместимый с iOS 16 (гибридный метод)

  1. Подключение: подключается к запущенному процессу приложения через Frida
  2. Перечисление: выводит список всех загруженных модулей (бинарников) в приложении
  3. Чтение бинарника с диска: читает исходный зашифрованный бинарник из файловой системы устройства
    • Критически важно для iOS 16: сохраняет данные LC_DYLD_CHAINED_FIXUPS
    • Сохраняет исходные DATA-сегменты с неповреждёнными цепочками фиксапов (fixup chains)
  4. Чтение расшифрованного сегмента: читает ТОЛЬКО зашифрованный TEXT-сегмент из памяти
    • iOS расшифровывает код во время выполнения
    • Мы читаем только расшифрованную часть, а не весь бинарник
  5. Замена и патчинг:
    • Заменяет зашифрованный TEXT-сегмент в бинарнике с диска на расшифрованную память
    • Устанавливает cryptid=0 в LC_ENCRYPTION_INFO
    • Все DATA-сегменты остаются нетронутыми (сохраняются фиксапы)
  6. Дамп: записывает гибридный бинарник в /tmp на устройстве
  7. Загрузка: передаёт файлы с устройства по SCP через paramiko
  8. Упаковка: создаёт расшифрованный IPA-файл, готовый к анализу

Почему это работает на iOS 16:

  • В iOS 16 используются цепочечные фиксапы (chained fixups) — указатели хранятся в виде «цепочек», которые dyld разрешает во время выполнения
  • Дамп из памяти даёт разрешённые указатели, но инструменты ожидают цепочки фиксапов
  • Читая бинарник с диска и заменяя только зашифрованный TEXT, мы сохраняем исходные фиксапы
  • Это тот же подход, который используют bagbak и другие современные дамперы

Результат

Инструмент создаёт:

  • Отдельные расшифрованные бинарники
  • Полный бандл приложения с расшифрованными бинарниками
  • Упакованный IPA-файл, готовый к анализу

Пример структуры вывода:

root@kitploit:~
/tmp/Ventusky_decrypted/
├── Payload/
│   └── Ventusky.app/
│       ├── Ventusky (decrypted main binary)
│       ├── Frameworks/
│       │   └── *.framework (decrypted frameworks)
│       └── ... (other app resources)
└── Ventusky_decrypted.ipa

Совместимость с джейлбрейком Taurine

Этот инструмент предназначен для работы с Frida-сервером, пропатченным под Taurine, который включает:

  1. Без приостановки потоков на iOS 14: предотвращает панику ядра
  2. Без внедрения в launchd: соблюдает ограничения Taurine
  3. Требуется ручной запуск приложений: приложения должны запускаться вручную перед созданием дампа

Устранение неполадок

«USB-устройство не найдено»

root@kitploit:~
# 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 &"

«Приложение не найдено»

root@kitploit:~
# List apps to find correct bundle ID:
python dump.py -l

«Приложение не запущено»

root@kitploit:~
# Launch the app manually on your device first
# This is required due to Taurine jailbreak restrictions

Сбой аутентификации SSH

root@kitploit:~
# 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: «Objective-C Metadata looks mangled» в Hopper

Если после патчинга на iOS 16 возникают ошибки метаданных:

Диагностика проблемы:

root@kitploit:~
# 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

Ключевые моменты для проверки:

  1. Размер файла совпадает с исходным бинарником на диске
  2. Наличие LC_DYLD_CHAINED_FIXUPS (специфично для iOS 16)
  3. Проверьте, что cryptid равен 0 после патчинга

Теперь инструмент читает исходный размер файла с диска, чтобы избежать дампа областей памяти, расширенных во время выполнения.

Проверка после создания дампа

Хорошие новости: теперь инструмент автоматически устанавливает cryptid=0 во время дампа, так что ручной патчинг больше не требуется!

Совместимость с iOS 16: инструмент использует гибридный подход:

  1. Читает исходный бинарник с диска (сохраняет цепочечные фиксапы)
  2. Заменяет только зашифрованный TEXT-сегмент на расшифрованную память
  3. Автоматически устанавливает cryptid=0
  4. Сохраняет все DATA-сегменты с исходными цепочками фиксапов

Это предотвращает ошибки «Is this a file manually extracted from the DYLD shared cache?» и «Objective-C Metadata looks mangled» на iOS 16.

Проверка дампа:

root@kitploit:~
# 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 не сработал:

root@kitploit:~
# 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

Ожидаемый результат:

  • ✅ Hopper открывается без предупреждений «ciphered» или «mangled metadata»
  • ✅ Все классы и методы Objective-C видны
  • ✅ Имена процедур корректно разрешены (не sub_XXXXX)
  • ✅ Работает как на iOS 14 (Taurine), так и на iOS 16 (palera1n)

Технические детали — цепочечные фиксапы iOS 16:

  • Проблема: в iOS 16 для аутентификации указателей используются LC_DYLD_CHAINED_FIXUPS
  • Сложность: дамп из памяти даёт разрешённые указатели, а не цепочки фиксапов
  • Решение: гибридный подход
    1. Читаем исходный зашифрованный бинарник с диска (содержит цепочки фиксапов)
    2. Читаем ТОЛЬКО расшифрованный TEXT-сегмент из памяти
    3. Заменяем зашифрованный TEXT в бинарнике с диска на расшифрованную память
    4. Сохраняем DATA-сегменты с диска (цепочки фиксапов неповреждённы)
    5. Автоматически устанавливаем cryptid=0
  • Результат: бинарник содержит расшифрованный код + исходные цепочки фиксапов = Hopper доволен!

Отличия API от старого frida-ios-dump

Этот инструмент использует современные API Frida 17.5.2:

Поддержка

Если вы находите этот инструмент полезным или нуждаетесь в дальнейших обновлениях, поддержите проект — Boba нуждается:

☕ Купи мне боба

Лицензия

Лицензия MIT — бесплатно для исследований в области безопасности и образовательных целей.

Авторы

  • Создан для использования с пропатченным под Taurine Frida (кейс-стади скоро появится)
  • Вдохновлён оригинальным frida-ios-dump от AloneMonkey
  • Современная реализация API для Frida 17.5.2+

Примечание по безопасности

Этот инструмент предназначен для:

  • Исследований в области безопасности
  • Задач CTF
  • Образовательных целей
  • ???
  • Профита
Скачать инструмент
Старый 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)Прямая запись бинарных данных