Восстанавливал ли ты когда-нибудь телефон из состояния «кирпича»? В зависимости от платформы, производителя и модели устройства сложность процесса может быть в диапазоне от «нажми на кнопку» до «проще выбросить». Наличие или отсутствие инструментов для прошивки, наличие в свободном доступе образов самих прошивок, сложность процедуры, вероятность окончательно угробить устройство — все эти факторы приходится учитывать, прежде чем браться за работу. В этой статье мы рассмотрим особенности восстановления прошивок на самых разных устройствах.
 

Apple iTunes: режимы DFU и Recovery

Начнем статью с описания того, как восстановление прошивки работает на смартфонах и планшетах Apple. Да, не по алфавиту, и нет, не потому, что «Apple — луДшие», а в силу того, что в этой экосистеме весь процесс исключительно четкий, прямолинейный и хорошо задокументированный. Забегая вперед, то же можно сказать и о смартфонах с мобильной версией Windows, вот только результат у Microsoft, в отличие от Apple, может оказаться неожиданным.

Для восстановления прошивки устройств под управлением iOS предусмотрено два разных режима: Recovery (собственно режим восстановления) и DFU (Device Firmware Update, режим обновления прошивки).

Разница между этими режимами заключается в том, что режим Recovery более высокоуровневый, хорошо задокументированный и ориентированный на конечных пользователей; в нем загружается iBoot, который и контролирует процесс прошивки. В этом режиме можно как прошить телефон заново, полностью удалив пользовательские данные, так и перезаписать только системный раздел (это может быть полезно, например, для удаления следов джейлбрейка, чтобы устройство смогло получать обновления OTA). Отметим, что код iBoot можно обновлять (и Apple это регулярно делает).

Режим DFU — низкоуровневый. Ближайшим аналогом в Android будет режим EDL (Emergency Download Mode). В этом режиме никакая часть iOS не загружается; работает исключительно прошитый в чипсете код, который может лишь проверить цифровую подпись образа и, если она совпадает, записать данные по определенным адресам. Режим DFU работает даже тогда, когда накопитель девственно чист: код iBoot не загружается, управление берет на себя жестко прошитый в чипсете код. Обратная сторона медали — этот код невозможно обновить. Если в нем будет найдена уязвимость, ее нельзя будет исправить. Именно так произошло в свое время с iPhone 4, и это сделало возможным безусловное извлечение данных из устройства независимо от установленного кода блокировки. Более того, умельцы смогли запустить на взломанном iPhone 4 кастомную сборку Android!

Режим восстановления Recovery предназначен для пользователей и подробно документирован. Apple предлагает воспользоваться режимом восстановления, если случилась одна из следующих неприятностей:

  • iTunes не распознает устройство или сообщает, что оно находится в режиме восстановления;
  • на экране уже несколько минут отображается логотип Apple без индикатора хода выполнения;
  • отображается экран подключения к iTunes.

На самом деле возможности режима восстановления не ограничены этими тремя пунктами. Нам приходилось пользоваться этим режимом в следующих ситуациях:

  • телефон заблокирован, код блокировки неизвестен. Сброс через режим восстановления позволяет удалить код блокировки (но потребуется пароль от учетной записи Apple, чтобы активировать телефон; впрочем, этот пароль можно сбросить, если есть доступ к привязанному почтовому ящику или номеру телефона, — с кодом блокировки так не выйдет);
  • телефон перешел в защитный режим USB Restricted Mode, коммуникации через USB-порт заблокированы. Использование режима восстановления позволяет узнать базовую информацию об устройстве (и, соответственно, сбросить его к заводским настройкам);
  • телефон заблокирован, потому что кто-то (чаще всего ребенок) превысил максимальное число попыток ввода кода блокировки. На телефоне при этом отображается сообщение Connect to iTunes, которое не совсем корректно: если устройство уже вошло в защитный режим USB Restricted Mode, подключать к iTunes бесполезно — необходимо войти в Recovery;
  • устройство не может установить обновление OTA, или на нем был установлен джейлбрейк. Восстановление (без удаления данных) позволяет избавиться от следов джейла. В особо запущенных случаях (многочисленные попытки установки разных версий джейлбрейков) для стабильной работы устройства может дополнительно потребоваться сброс к заводским настройкам, что тоже можно проделать через Recovery.

На старых устройствах для перехода в режим восстановления достаточно было выключить телефон, подождать 10–15 секунд, после чего подключить к компьютеру с iTunes, удерживая кнопку «Домой». На новых существуют разные варианты:

  • на iPhone 8 и более новых моделях нажать и быстро отпустить кнопку увеличения громкости. Нажать и быстро отпустить кнопку уменьшения громкости. Затем нажать и удерживать боковую кнопку, пока не появится экран подключения к iTunes;
  • на iPhone 7 или iPhone 7 Plus одновременно нажать и удерживать боковую кнопку и кнопку уменьшения громкости. Продолжать удерживать их, пока не появится экран подключения к iTunes;
  • на устройстве iPhone 6s и более ранних моделях, iPad или iPod touch: одновременно нажать кнопку «Домой» и верхнюю (или боковую) кнопку. Продолжать удерживать их, пока не появится экран подключения к iTunes.
Экран восстановления iOS 12
Экран восстановления iOS 12

А вот переход в режим DFU компанией не документирован. Для каждой модели устройства последовательность шагов для перехода в режим DFU своя, и если для входа в Recovery достаточно нажать-отпустить или нажать-удерживать определенные кнопки, то при входе в DFU очень важна длительность нажатий. Если написано «Удерживать одну секунду» — то кнопку нужно нажать ровно на одну секунду. Чуть дольше или чуть меньше — и устройство вместо входа в DFU просто перезагрузится.

Подробно шаги для перехода в режим DFU описаны в статье Everything about iOS DFU and Recovery Modes. Вот для примера последовательность для поколения устройств iPhone 8, 8 Plus и iPhone X:

  1. Телефон подключить к компьютеру.
  2. Быстро нажать и отпустить Volume Up.
  3. Быстро нажать и отпустить Volume Down.
  4. Нажать и удерживать кнопку питания, пока экран не станет черным, после чего зажать кнопку Volume Down (продолжая удерживать кнопку питания).
  5. Через пять секунд отпустить кнопку питания (продолжая удерживать Volume Down).
    Если телефон перегрузился, ты видишь логотип Apple или индикатор режима Recovery — что-то пошло не так, и тебе придется повторить заново всю последовательность.
  6. В режиме DFU экран телефона останется черным. Чтобы определить, что устройство находится в нужном режиме, запусти iTunes. Если iTunes покажет сообщение, что обнаружено устройство в режиме восстановления, — ты попал туда, куда нужно.

Если теперь запустить iTunes, он предложит выполнить восстановление или обновление устройства. Если выбрать «Обновить», iTunes попытается переустановить iOS, не стирая данные. Соответственно, режим «Восстановить» восстановит прошивку и удалит все данные. Обрати внимание: iTunes самостоятельно скачает с сервера Apple нужный образ и самостоятельно сделает обновление. Если ты хочешь использовать образ iOS (скачанный IPSW-файл на диске), тебе достаточно будет кликнуть на кнопке «Обновить» или «Восстановить», удерживая Shift на клавиатуре. В этом случае iTunes не будет качать образ прошивки, а попросит тебя указать путь к файлу IPSW на диске. Обрати внимание: образ прошивки IPSW для режимов Recovery и DFU используется один и тот же.

Сообщение iTunes о необходимости восстановления устройства
Сообщение iTunes о необходимости восстановления устройства

Впрочем, установить любую версию iOS тебе не удастся, даже если ты скачаешь нужный IPSW: Apple полностью контролирует то, какие именно версии прошивки ты можешь установить на свое устройство, причем в обоих режимах — Recovery и DFU. Как правило, ты сможешь установить только самую свежую версию iOS (на момент написания статьи это iOS 12.1). Если Apple недавно выпустила обновление iOS, то у тебя будет «окно» (как правило, порядка двух недель), в течение которого ты сможешь установить или последнюю, или предпоследнюю версию iOS. Как только Apple прекратит подписывать предыдущую версию iOS, «окно» закрывается, и ты снова сможешь ставить только самую последнюю (текущую) версию системы.

Если на устройстве была установлена бета-версия iOS, а ты хочешь перейти обратно на релиз, то тебе будет доступна возможность установить предыдущую версию. Защиты от «отката» как таковой нет; если Apple подпишет прошивку, то она установится (понижение версии прошивки удаляет пользовательские данные; повышение или прошивка той же версии — не обязательно).

Наконец, ты сможешь откатиться на любую версию iOS, если на устройстве был установлен джейлбрейк, а ты озаботился сохранением BLOB’ов тогда, когда та версия системы еще подписывалась Apple. Впрочем, если это так, то, вероятно, ты знаешь об использовании режима Recovery больше автора этого текста.

Можно ли проделать все вышеописанное без iTunes? Вопрос неоднозначный. Да, несколько программ (в основном китайского происхождения) могут устраивать с iPhone вещи, которые iTunes не хочет или не умеет (например — залить в телефон папку с музыкой… Попробуй на досуге такое проделать с iTunes — хардкор покруче восстановления прошивки!). Некоторые из них (например, iPhone Manager) могут залить в устройство и образ прошивки в режиме восстановления.

Проблема в том, что для работы по протоколам Recovery и DFU тебе понадобятся драйверы, которые как раз и идут в составе iTunes. Все эти приложения или включают неизвестную версию таких драйверов в собственный дистрибутив (этого делать нельзя, но китайское происхождение списывает и не такое), или — более корректно — подгружают пакет драйверов с сервера уже после установки (так делает, например, iBackupBot). Большого смысла в использовании таких приложений для восстановления прошивки вместо iTunes я лично не вижу.

 

Android: разброд и шатание

С восстановлением прошивки на смартфонах с Android дела обстоят… разнообразно. И даже не потому, что существует множество разных режимов и протоколов, а из-за различных подходов к процессу у разных производителей. Редкий OEM публикует образы для нормальной прошивки и обновления устройства, а уж найти образы для одного из emergency-режимов — и вовсе большая удача. Но — по порядку.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии