APNonce в iOS: где посмотреть и как использовать этот параметр

Если вы когда-нибудь сталкивались с джейлбрейком, даунгрейдом прошивки или восстановлением iPhone/iPad через FutureRestore, то наверняка слышали про загадочный APNonce. Этот параметр — своего рода «отпечаток» текущего состояния загрузчика устройства, который критически важен для работы с подписанными (или неподписанными) прошивками. Без правильного APNonce даже самая актуальная инструкция по даунгрейду может не сработать, а устройство рискует оказаться в режиме Recovery Mode без возможности выхода.

В этой статье мы разберёмся, что такое APNonce на практике (без лишней теории), где его найти в iOS и macOS, а также как использовать эту информацию для безопасного восстановления или джейлбрейка. Особое внимание уделим актуальным методам для iOS 15–17, поскольку старые способы (вроде чтения через ideviceinfo) часто перестают работать после обновлений Apple.

Что такое APNonce и почему он важен

APNonce (или ApNonce, ApNonce) — это уникальный 64-битный идентификатор, который генерируется загрузчиком Apple (iBoot) при каждом включении устройства. Он используется для:

  • 🔐 Подписи прошивок: Apple привязывает подпись (SHSH blob) к конкретному APNonce. Без совпадения этого значения восстановление через FutureRestore или Odysseus невозможно.
  • 🔄 Даунгрейда iOS: При понижении версии прошивки нужно «поймать» APNonce, для которого у вас есть сохранённые blob’ы.
  • 🛠️ Восстановления после сбоев: Если устройство застряло в DFU Mode, знание текущего APNonce поможет подобрать правильные blob’ы для выхода.

Важно понимать, что APNonce меняется при каждом полном выключении устройства (не перезагрузке!). Например, если вы выключили iPhone, а затем включили его снова, значение сбросится. Это усложняет работу с blob’ами, поскольку нужно успеть сохранить их для актуального APNonce.

⚠️ Внимание: На устройствах с чипом A12 и новее (iPhone XS, iPad Pro 2018+) APNonce генерируется аппаратным модулем SEP (Secure Enclave Processor). Это означает, что его нельзя изменить программно — только «поймать» текущее значение.
📊 Вы когда-нибудь пытались сделать даунгрейд iOS?
Да, успешно
Да, но безуспешно
Нет, но хочу попробовать
Нет и не планирую

Как узнать APNonce на iPhone или iPad

Есть несколько способов получить текущий APNonce, но не все они работают на последних версиях iOS. Мы рассмотрим актуальные методы для iOS 15–17, включая обход ограничений Apple.

Метод 1: Через утилиту irecovery (для устройств в DFU Mode)

Если ваш iPhone или iPad находится в режиме DFU, можно прочитать APNonce напрямую через командную строку:

  1. Подключите устройство к Mac или Linux (на Windows потребуется WSL).
  2. Установите libimobiledevice и irecovery:
    brew install libimobiledevice
    

    brew install irecovery

  3. Переведите устройство в DFU Mode (инструкция ниже).
  4. Выполните команду:
    irecovery -q | grep "NONC"

    В выводе найдите строку вида NONC: 0x123456789abcdef0 — это и есть ваш APNonce.

Если команда возвращает ошибку ERROR: Unable to connect to device, проверьте:

  • 🔌 Правильность подключения кабеля (используйте оригинальный Lightning/USB-C).
  • 🖥️ Наличие драйверов libimobiledevice (на Windows может потребоваться iTunes).
  • 🔄 Повторный ввод в DFU (иногда устройство «выпадает» из режима).
Как войти в DFU Mode на iPhone с Face ID

1. Подключите устройство к компьютеру.
2. Быстро нажмите и отпустите кнопку Увеличения громкости.
3. Быстро нажмите и отпустите кнопку Уменьшения громкости.
4. Зажмите кнопку Питания на 10 секунд, пока экран не погаснет.
5. Не отпуская кнопку Питания, зажмите кнопку Уменьшения громкости на 5 секунд, затем отпустите кнопку Питания, продолжая держать Уменьшение громкости ещё 10 секунд.
6. Экран должен остаться чёрным — это признак успешного входа в DFU.

Метод 2: Через джейлбрейк-твики (для работающей системы)

Если устройство включено и на нём установлен джейлбрейк, можно использовать твики:

  • 📱 System Info (из репозитория https://repo.packix.com/) — показывает APNonce в разделе Device Information.
  • 🔧 NewTerm 2 + команда:
    nvram -p | grep "com.apple.System.boot-nonce"

    (работает не на всех версиях iOS).

⚠️ Внимание: На iOS 16+ многие твики для чтения APNonce перестали работать из-за ужесточения безопасности Apple. Если команда nvram возвращает пустой результат, попробуйте метод с irecovery.

Метод 3: Через логи macOS (для устройств в Recovery Mode)

Если iPhone в режиме Recovery Mode, а irecovery не работает, можно попробовать извлечь APNonce из логов macOS:

  1. Подключите устройство к Mac.
  2. Откройте Консоль.app (из папки Утилиты).
  3. В поиске введите MobileDevice и найдите строки с ApNonce или NONCE.

Этот метод менее надёжен, но иногда помогает, если другие способы недоступны.

☑️ Подготовка к чтению APNonce

Выполнено: 0 / 4

Таблица: Совместимость методов с версиями iOS

Метод iOS 14 и ниже iOS 15 iOS 16 iOS 17 Примечания
irecovery (DFU) ✅ Да ✅ Да ✅ Да ✅ Да Самый надёжный способ
nvram (джейлбрейк) ✅ Да ⚠️ Частично ❌ Нет ❌ Нет Блокируется Apple на новых версиях
Твик System Info ✅ Да ✅ Да ⚠️ Зависит от твика ❌ Нет Требует актуальной версии твика
Логи macOS ✅ Да ✅ Да ✅ Да ✅ Да Менее надёжно, но иногда срабатывает

Как использовать APNonce для даунгрейда или восстановления

Знание APNonce бесполезно без сохранённых SHSH blob’ов. Вот пошаговый алгоритм, как применить этот параметр на практике:

  1. Сохраните blob’ы для текущего APNonce:
    • 🖥️ Используйте утилиту tsschecker (для Mac/Linux) или онлайн-сервисы вроде TSS Saver.
    • 📝 Укажите в команде ваш APNonce и ECID устройства:
      tsschecker -d [Ваш ECID] -e [Ваш APNonce] -i [Версия iOS] -s
  • Проверьте совместимость blob’ов:
    • 🔍 Откройте сохранённый .shsh2-файл текстовым редактором и найдите строку <string>ApNonce</string> — её значение должно совпадать с вашим текущим APNonce.
    • Восстановите прошивку через FutureRestore:
      futurerestore -t [blob.shsh2] --latest-sep --latest-baseband [IPSW] --use-pwndfu

      Ключ --use-pwndfu нужен для обхода проверки Apple на устройствах с чипом A9–A11.

    ⚠️ Внимание: На устройствах с чипом A12+ (например, iPhone XS, iPad Pro 2018+) даунгрейд без подписанных Apple прошивок практически невозможен из-за аппаратных ограничений SEP. Даже с правильным APNonce шанс успеха минимален.

    Частые ошибки и как их избежать

    Работа с APNonce часто сопровождается проблемами. Вот самые распространённые из них и способы их решения:

    • 🔄 APNonce меняется при перезагрузке:

      Это нормальное поведение. Чтобы «зафиксировать» значение, не выключайте устройство до завершения всех манипуляций с прошивкой. Если нужно перезагрузиться, используйте ldid -S для патчинга ядра (только для опытных пользователей).

    • irecovery не видит устройство:

      Проверьте:

      • 🔌 Кабель (лучше оригинальный USB-A to Lightning или USB-C).
      • 🖥️ Права на порт /dev/usb* (на Linux может потребоваться sudo chmod).
      • 🔄 Повторный ввод в DFU Mode (иногда устройство «вылетает» из режима).
    • 🚫 Ошибка ERROR: Unable to enter PWNDFU в FutureRestore:

      На устройствах A12+ этот метод не работает. Попробуйте:

      • 🔧 Использовать checkm8-эксплоит для A9–A11.
      • 📱 Проверить совместимость blob’ов с версией SEP.

    APNonce и безопасность: что нужно знать

    APNonce — не просто технический параметр, но и потенциальная уязвимость. Вот почему:

    • 🔓 Атаки через bootrom-эксплоиты:

      Злоумышленники могут использовать уязвимости вроде checkm8, чтобы сбросить APNonce и установить неподписанную прошивку. Это один из векторов атак на iPhone с джейлбрейком.

    • 🛡️ Защита от Apple:

      Начиная с iOS 15, Apple ужесточила контроль над nvram, чтобы заблокировать чтение APNonce без DFU. Это усложнило жизнь как хакерам, так и легитимным пользователям, желающим сделать даунгрейд.

    Если вы планируете эксперименты с прошивками, следуйте правилам:

    • 🔒 Не делитесь своими blob’ами или APNonce в открытых источниках.
    • 📱 Используйте только проверенные утилиты (tsschecker, FutureRestore) из официальных репозиториев.
    • 🔄 Перед даунгрейдом сделайте резервную копию через iTunes/Finder — восстановление данных после сбоя может быть невозможно.

    FAQ: Ответы на частые вопросы

    Можно ли изменить APNonce на iPhone с чипом A12+?

    Нет, на устройствах с A12 и новее (iPhone XS, iPad Pro 2018+) APNonce генерируется аппаратным модулем SEP и не может быть изменён программно. Это делает даунгрейд на этих моделях крайне сложным или невозможным без подписи Apple.

    Что делать, если APNonce в blob’ах не совпадает с текущим?

    Вам нужно:

    1. Выключить и снова включить устройство, чтобы сгенерировать новый APNonce.
    2. Сохранить новые blob’ы для этого значения.
    3. Повторить попытку восстановления.

    На A12+ этот метод не сработает — требуется официальная подпись прошивки.

    Можно ли узнать APNonce без компьютера?

    Теоретически да, но только если на устройстве установлен джейлбрейк и работает твик вроде System Info. Без джейлбрейка или в режиме DFU/Recovery компьютер обязателен.

    Почему после обновления iOS APNonce стал недоступен для чтения?

    Apple регулярно закрывает лазейки для чтения nvram и других низкоуровневых параметров. Начиная с iOS 16, многие методы (вроде команды nvram -p) перестали работать. Используйте irecovery в DFU Mode — это самый надёжный способ на сегодня.

    Что такое generator в SHSH blob’ах и как он связан с APNonce?

    Generator (или ApTicket) — это часть подписи прошивки, которая привязана к APNonce. При восстановлении через FutureRestore утилита проверяет, что generator в blob’е соответствует текущему APNonce устройства. Без этого совпадения восстановление завершится ошибкой.