Восстанавливали ли вы когда-нибудь телефон из состояния «кирпича»? В зависимости от платформы, производителя и модели устройства сложность процесса может быть в диапазоне от «нажми на кнопку» до «проще выбросить». Наличие или отсутствие инструментов для прошивки, наличие в свободном доступе образов самих прошивок, сложность процедуры, вероятность окончательно угробить устройство — все эти факторы приходится учитывать, прежде чем браться за работу. В сегодняшней статье мы рассмотрим особенности восстановления прошивок на самых разных устройствах.
- Восстановление прошивки iPhone
- Восстановление прошивки Android
- Пакеты full OTA для штатного Recovery
- Пакеты Fastboot для устройств с разблокированным загрузчиком
- Режимы Deep Flash от производителей чипсетов
- Собственные приложения производителей
- Что поддерживает производитель твоего смартфона?
- Восстановление прошивки Windows 10 Mobile
- Восстановление прошивки BlackBerry 10
- О безопасности режимов восстановления прошивки
- Apple iOS
- Android
- Windows 10 Mobile
- BlackBerry 10
- Заключение
Восстановление прошивки iPhone
Начнем статью с описания того, как восстановление прошивки работает на смартфонах и планшетах 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.
А вот переход в режим DFU компанией не документирован. Для каждой модели устройства последовательность шагов для перехода в режим DFU своя, и если для входа в Recovery достаточно нажать-отпустить или нажать-удерживать определенные кнопки, то при входе в DFU очень важна длительность нажатий. Если написано «Удерживать одну секунду» — то кнопку нужно нажать ровно на одну секунду. Чуть дольше или чуть меньше — и устройство вместо входа в DFU просто перезагрузится.
Подробно шаги для перехода в режим DFU описаны в статье Everything about iOS DFU and Recovery Modes. Вот для примера последовательность для поколения устройств iPhone 8, 8 Plus и iPhone X:
- Телефон подключить к компьютеру.
- Быстро нажать и отпустить Volume Up.
- Быстро нажать и отпустить Volume Down.
- Нажать и удерживать кнопку питания, пока экран не станет черным, после чего зажать кнопку Volume Down (продолжая удерживать кнопку питания).
- Через пять секунд отпустить кнопку питания (продолжая удерживать Volume Down).
Если телефон перегрузился, ты видишь логотип Apple или индикатор режима Recovery — что-то пошло не так, и тебе придется повторить заново всю последовательность. - В режиме DFU экран телефона останется черным. Чтобы определить, что устройство находится в нужном режиме, запусти iTunes. Если iTunes покажет сообщение, что обнаружено устройство в режиме восстановления, — ты попал туда, куда нужно.
Если теперь запустить iTunes, он предложит выполнить восстановление или обновление устройства. Если выбрать «Обновить», iTunes попытается переустановить iOS, не стирая данные. Соответственно, режим «Восстановить» восстановит прошивку и удалит все данные. Обрати внимание: iTunes самостоятельно скачает с сервера Apple нужный образ и самостоятельно сделает обновление. Если ты хочешь использовать образ iOS (скачанный IPSW-файл на диске), тебе достаточно будет кликнуть на кнопке «Обновить» или «Восстановить», удерживая Shift на клавиатуре. В этом случае iTunes не будет качать образ прошивки, а попросит тебя указать путь к файлу IPSW на диске. Обрати внимание: образ прошивки IPSW для режимов Recovery и DFU используется один и тот же.
Впрочем, установить любую версию 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-режимов — и вовсе большая удача. Но — по порядку.
За подсчет количества уникальных протоколов для обновления прошивок на телефонах с Android я, пожалуй, не возьмусь. Назову основные способы.
Пакеты full OTA для штатного Recovery
В отличие от инкрементных OTA, прилетающих «по воздуху», прошивка такого пакета обновляет систему до актуального состояния независимо от того, какая версия Android была установлена. Далеко не все производители предлагают пользователям пакеты full OTA, и далеко не для всех моделей такие пакеты можно найти. Преимущества этого способа в относительной простоте, в отсутствии необходимости разблокировать загрузчик и в том, что данные при прошивке сохраняются.
Режим Recovery достаточно хорошо документирован и в целом доступен для продвинутого пользователя. Риск повредить устройство при помощи штатного Recovery меньше, чем при использовании низкоуровневых методов.
Недостаток этого метода в том, что для него необходим корректно работающий телефон, который может загрузиться в штатное Recovery. При этом Recovery — это, по сути, урезанная версия операционной системы с полноценным ядром и драйверами. Если сбой произошел в разделе Recovery, воспользоваться этим методом не получится.
Не все производители официально предлагают образы full OTA, но зачастую их можно скачать с серверов производителя при помощи сторонних утилит, которые существуют для многих популярных моделей.
Пакеты Fastboot для устройств с разблокированным загрузчиком
Такие пакеты рекомендуется прошивать одновременно с полным сбросом к заводским настройкам, но штатные обновления и восстановление прошивки часто можно выполнить с сохранением данных. Плюсы такого подхода в том, что пользователю доступен полный контроль над тем, какие именно разделы будут прошиты (например, для удаления рут-доступа достаточно прошить чистое ядро, в редких случаях — и системный раздел). Минус очевиден: в большинстве случаев для прошивки образов через Fastboot требуется разблокированный загрузчик (исключения бывают; к ним относится, например, смартфон BlackBerry Priv, который позволяет прошивать автозагрузчики через Fastboot с заблокированным загрузчиком). Таких устройств относительно немного; далеко не каждый производитель позволяет разблокировать загрузчик, да и условия для разблокировки могут быть драконовскими — от лишения гарантии до уничтожения ключей DRM. Иными словами, смартфонов, для которых годится подход с Fastboot, довольно мало.
Режим Fastboot работает на уровне загрузчика (bootloader) еще до загрузки ядра. Соответственно, в состоянии soft brick шанс увидеть работающий Fastboot выше, чем возможность увидеть работающий Recovery. При помощи Fastboot в смартфон с разблокированным загрузчиком можно легко прошить несовместимый загрузчик, в результате чего смартфон не сможет загрузиться даже в режиме Fastboot, и для восстановления его придется прошивать через EDL.
Далеко не все производители предлагают прошивки для Fastboot. Более того, тех, кто предлагает, — абсолютное меньшинство.
Режимы Deep Flash от производителей чипсетов
Производители наборов системной логики в референсных дизайнах предлагают простой протокол для восстановления прошивок. В устройствах Qualcomm это режим EDL (Emergency Download Mode), также известный под несколькими другими названиями (в частности, режим 9008). Для устройств MediaTek доступен свой протокол, которым можно воспользоваться при помощи утилиты SP Flash Tool. Объединяет эти протоколы то, что код, необходимый для их работы, прошит в чипсете; данные с накопителя для загрузки в режим EDL не нужны, что позволяет восстанавливать даже такие устройства, у которых недоступен режим Fastboot.
Для прошивки через EDL требуются отдельные пакеты и файлы для программы-прошивальщика, которые позволят загрузить в устройство нужный код и в которых будут указаны адреса в памяти смартфона, куда нужно записывать те или иные данные.
На смартфонах с чипсетом от Qualcomm для перехода в режим EDL, если производитель использовал референсный дизайн, достаточно выключить телефон, зажать одну из кнопок громкости и подключить его к компьютеру. Устройство должно определиться в диспетчере задач как Qualcomm HS-USB 9008; если этого не произошло, то либо устройство находится в другом режиме, либо тебе нужно установить соответствующий драйвер (в таком случае устройство обычно определяется как QHSUSB_BULK).
В более свежих смартфонах такой способ перевода в режим EDL может не сработать, а сам режим активируется замыканием определенных контактов в разъеме USB. Не стоит резать кабель или лезть в USB-порт смартфона; как правило, в таких случаях достаточно использовать соответствующий кабель.
Наконец, в совсем свежих устройствах режим EDL может активироваться и более изощренным способом, который потребует доступа к системной плате устройства (для чего телефон придется разобрать).
Забавный факт: режим EDL в телефонах Alcatel Idol 4s / 4 Pro, работающих под управлением Windows 10 Mobile, работает точно так же, как в соответствующих моделях компании на Android. Утилиты для прошивки Android-версий телефонов работают и для восстановления моделей с Windows.
Собственные приложения производителей
Некоторые производители выпускают собственные приложения для прошивки смартфонов, использующие режим EDL от производителя набора системной логики или заменяющие его собственным протоколом. Такие приложения есть у Samsung (что интересно, для разных моделей требуются разные версии приложения), у LG, Sony, Xiaomi… Иногда в таких приложениях будет доступен режим восстановления прошивки, иногда — нет. Зависит это как от производителя, так и от конкретной модели устройства. Как правило, такие приложения или переведут устройство в нужный для прошивки режим самостоятельно, или покажут пользователю соответствующую инструкцию.
Что поддерживает производитель твоего смартфона?
Для смартфонов Android нет единого стандарта восстановления прошивок; даже образы full OTA могут быть, а могут не быть опубликованы производителем, не говоря уже о файлах для более низкоуровневых манипуляций.
Для смартфонов Google Pixel доступны образы Fastboot и full OTA для прошивки через Recovery без разблокирования загрузчика. К сожалению, практика показала, что этого недостаточно. Проработавший менее года телефон Pixel 2 с заблокированным загрузчиком неожиданно отказался загружаться с ошибкой Slot A unbootable. Разблокированный загрузчик позволил бы прошить в нужный слот образ восстановления или хотя бы сменить загрузочный слот, но разблокировка устройства была невозможна. Прошивка full OTA через штатное Recovery также могла бы решить проблему, но штатное Recovery не загружалось так же, как и сама система. Наконец, восстановление через EDL совершенно точно решило бы проблему — но как раз EDL-образы Google не публикует. В результате устройство заменили по гарантии, а систему восстановления прошивки от Google я вынужден признать недостаточной.
Для смартфонов Samsung существует как минимум два интересных продукта, позволяющих восстанавливать прошивки. Это Odin (разработка Samsung для использования внутри компании и в сервисных центрах) и основанный на том же протоколе продукт с открытым исходным кодом Heimdall. Эти продукты используют проприетарный протокол Samsung Odin, который поддерживают все устройства компании независимо от чипсета (Snapdragon или Exynos). Протокол Odin работает на более высоком уровне, чем режим EDL. Во время работы телефон загружает программный компонент с кодовым названием Loki. При повреждении загрузчика (или прошивке несовместимого загрузчика) Loki может не загрузиться, в результате чего даже использование Odin не поможет восстановить устройство. Что интересно, некоторые смартфоны Samsung (совершенно точно — протестированный Galaxy S8 на чипсете Exynos) позволяют разблокировать загрузчик простым переключением настройки OEM Unlock; никакого сброса данных при этом не происходит.
Компания OnePlus публикует как образы для прошивки через Fastboot (для устройств с разблокированным загрузчиком), так и образы для штатного Recovery, позволяющие сменить регион прошивки (китайская/международная) или обновить ПО без разблокирования загрузчика. Энтузиастам доступен и весь набор инструментов для восстановления прошивки через EDL, что открывает возможность эксплуатации интересной уязвимости.
Для некоторых моделей смартфонов Motorola доступны образы full OTA, позволяющие обновить прошивку без разблокирования загрузчика. Компания официально не дает образы для Fastboot, однако при желании найти их можно (хоть и не всегда актуальных версий).
У смартфонов LG есть собственный режим восстановления прошивки, работающий независимо от производителя чипсета (Qualcomm или MediaTek). Проприетарный протокол LG работает поверх режима EDL соответствующего чипсета и допускает двустороннюю коммуникацию; через него можно как скачать, так и залить на смартфон любые данные. Для смартфонов LG доступны образы full OTA, работающие через штатное Recovery. Образы Fastboot доступны для немногочисленных моделей, для которых компания разрешает разблокировку загрузчика. При желании можно найти и образы для прошивки через EDL (точнее, LG UP); в частности, использование таких образов позволяет менять регион устройства и перепрошивать между операторскими и нейтральными прошивками.
Компания Xiaomi публикует образы для прошивки через встроенное Recovery (full OTA) и Fastboot (для устройств с разблокированным загрузчиком). Для старых устройств доступна прошивка через режим EDL при помощи «кабеля с кнопкой» (нужно отметить, что такая процедура позволяла вернуть некоторые модели Xiaomi в третье состояние загрузчика — «не заблокирован»). А вот для использования режима EDL для новых устройств, в которых предусмотрена региональная блокировка прошивок, приводящая к «окирпичиванию» неправильно прошитых устройств при блокировании загрузчика, тебе потребуется специальное разрешение от производителя — без него ввести телефон в режим EDL не получится.
Для смартфонов Sony Xperia доступно как фирменное приложение, так и сторонние решения для восстановления прошивки. В большинстве случаев такие решения работают без разблокировки загрузчика. Более того, в ряде моделей можно почти штатным образом перейти с одной региональной прошивки на другую, что может дать ощутимую пользу: так, в модели Xperia XZ Premium, выпущенной для рынка Северной Америки, был на программном уровне заблокирован датчик отпечатка пальцев. Переход на европейскую прошивку возвращал функциональность датчика решившимся на этот шаг пользователям. (В скобках заметим, что политика Sony относительно разблокировки загрузчика подразумевает уничтожение DRM-ключей, что приводит к невозможности впоследствии восстановить телефон до заводского состояния.)
Многие китайские смартфоны (и большинство из тех, что выпускаются с процессорами MTK) позволяют использовать SP Flash Tool, а соответствующие образы прошивок легко найти на профильных форумах.
Восстановление прошивки Windows 10 Mobile
В теории с восстановлением прошивок устройств на Windows 10 Mobile все хорошо. Не очень хорошо то, что на практике к такому восстановлению приходится прибегать как-то слишком часто (мне доводилось перепрошивать не одно и не два устройства, да и знакомые любители Windows на телефонах тоже время от времени вынуждены перепрошивать их «с нуля»).
В природе существует ограниченное количество телефонов, работающих под управлением Windows 10 Mobile. Большинство из них выпущено Microsoft, и все без исключения устройства оборудованы процессорами Qualcomm. Соответственно, утилита для восстановления прошивки (а это Microsoft Windows Device Recovery Tool, WDRT) работает по стандартному для процессоров Snapdragon протоколу Qualcomm 9008 Emergency Download (EDL). Чисто теоретически через этот режим можно вернуть устройство в полностью заводское состояние.
Подход в WDRT используется правильный, хоть и отличный от Apple iTunes: телефон будет прошит не на самую последнюю версию системы, а на самую первую — ту, с которой устройство вышло с завода. Microsoft никак не контролирует версии прошивок; система защиты от отката (anti-rollback) отсутствует как класс, что в некоторых случаях позволяет обходить и систему защиты от кражи Find My Phone (доступную, впрочем, только в американских моделях).
Устройство определяется при подключении к компьютеру (а если нет, его можно вручную выбрать из списка), приложение автоматически (и достаточно быстро) скачивает нужный образ, после чего автоматически же его прошивает. Казалось бы, что может пойти не так?
Как показали события вокруг октябрьского обновления Windows 10, в случае с Microsoft «не так» может пойти абсолютно все. Более-менее надежно инструмент работает только для устройств, выпущенных самой компанией Microsoft, причем уже с Windows 10 на борту.
Попытка восстановить через WDRT телефон Nokia 930 (он вышел с Windows Phone 8.1, то есть восстановление должно было «откатить» систему именно до этого состояния) закончилась полностью бездыханным устройством, которое не подавало ни малейших признаков жизни при любых манипуляциях (устройство по гарантии заменили). Попытка откатить Lumia 730 закончилась не столь драматично: всего лишь перестала работать телефонная часть смартфона. Как оказалось, в образ восстановления для конкретной версии этого телефона не вошла соответствующая версия прошивки модуля сотовой связи, которая осталась от Windows 10, что и привело к печальным последствиям. Ручное обновление устройства до свежей сборки Windows 10 Mobile стало единственным способом восстановить работоспособность.
Интереснее всего получилось с неудавшимся флагманом на Snapdragon 820, североамериканской версией Alcatel Idol 4s (Open Market). С самого момента выхода телефона два года назад пользователи активно жаловались на невозможность прошивки устройства при помощи WDRT: приложение успешно скачивало прошивку, но отказывалось ее устанавливать. Пользователям удалось выяснить, что проблема в неправильном идентификаторе модели, указанном в конфигурационном файле прошивки. С декабря 2016 года компании Alcatel и Microsoft прилагают максимум усилий, чтобы исправить ситуацию, но исправление четырехзначного идентификатора превысило возможности программистов компаний. В результате пользователи с XDA самостоятельно разработали алгоритм перепрошивки этого устройства (а перепрошивать его приходится, так как время от времени в системе накапливаются ошибки, приводящие к невозможности обновления до свежей сборки Windows даже после сброса к заводским настройкам). Приведу алгоритм полностью (кстати, личный опыт: алгоритм работает!).
- Использовать WDRT, чтобы скачать заводскую прошивку. Процедура известна: подключить телефон, выбрать модель, позволить приложению скачать файлы прошивки на диск.
- В WDRT будет показана инструкция, как переключить телефон в режим EDL. Все просто: достаточно отключить телефон от компьютера, выключить его и подождать 10–15 секунд. После этого снова подключить телефон к компьютеру, удерживая одну из кнопок громкости до тех пор, пока не появится индикация режима восстановления.
- После этого начинается самое интересное. WDRT откажется прошивать телефон, и тебе придется воспользоваться инструкцией с XDA.
- Найти в каталоге WDRT файл прошивки RTM_IDOL_4S_Open_F1052.16.09031.50700_1052.16.0903 1.50700.FFU.
- Скачать архив с программатором emmcdl.exe и недостающими в прошивке файлами idol4S_PRO_WIN_NPRG7627.bin, rawprogram_6071w_OM.xml (ссылки — в инструкции с XDA).
- Воспользоваться программатором, чтобы прошить телефон (команды — снова по ссылке).
Как ты думаешь, что случилось бы с Apple, если бы один из iPhone потребовал подобных танцев с бубном для перепрошивки?
Восстановление прошивки BlackBerry 10
Когда-то давно существовала и развивалась собственная ОС BlackBerry на основе QNX. На BlackBerry 10 работал целый ряд устройств — от недорогих BlackBerry Q10 до очень интересного BlackBerry Passport. Восстановить (да и обновить) прошивку можно было при помощи так называемых автозагрузчиков. Автозагрузчик — это контейнер в виде исполняемого файла (.exe), в котором содержится все необходимое для прошивки смартфона, включая собственно набор файлов ОС и прошивку радиомодуля. Автозагрузчик самостоятельно переведет устройство в режим EDL и самостоятельно зальет нужный софт. Не нужно никаких Flash Tools, QPST, QFIL и других страшных слов, не нужно тренировать пальцы для четкого и правильного зажатия кнопок в верной последовательности. Просто скачиваем файл с сайта BlackBerry или с любимого форума, запускаем — и устройство восстанавливается. Зловредное ПО? Нет, не получится: прошить можно только файлы, у которых совпадает цифровая подпись. За все годы работы обойти это условие так и не удалось, так что прошивку устройства считаем действительно безопасной.
Еще интересный момент: прошивку можно обновлять по частям, просто собрав собственный автозагрузчик из нужных компонентов. Или можно записать отдельные приложения в виде .BAR-файлов через программу Sachesi. Разумеется, файлы также должны быть подписаны BlackBerry, иначе в систему они не прошьются, но вот комбинировать их можно в любом порядке — собрав, по желанию, свою собственную прошивку. А вот пользовательское приложение таким образом установить можно, но никаких преференций по сравнению с приложениями, установленными из магазина, оно не получит.
Современные смартфоны BlackBerry выпускаются по лицензии сторонними компаниями и работают под управлением Android. Для них также существуют автозагрузчики, которые, однако, представляют собой всего лишь пакеты файлов для Fastboot.
О безопасности режимов восстановления прошивки
Вопрос безопасности твоих данных и их доступности через разнообразные режимы восстановления мы решили вынести в отдельную главу: так будет проще сравнивать.
Apple iOS
Проще всего дело обстоит с iPhone. Как режим Recovery, так и режим DFU дают предельно ограниченный доступ к содержимому смартфона. Через режим DFU о телефоне можно узнать следующую информацию:
- Device model: iPhone7,2 (n61ap), iPhone10,6 (d221ap) и так далее;
- ECID / Unique Chip ID: уникальный идентификатор процессора в формате XXXXXXXXXXXXXXXX;
- Serial number: серийный номер устройства (только в режиме Recovery; через DFU недоступен);
- IMEI: также недоступен через DFU; в режиме Recovery возвращается не всегда;
- Mode: индикатор режима, RECOVERY или DFU.
Пример данных, возвращаемых через DFU:
1 2 3 4 5 6 |
[crayon-67593af5d3222249967154 inline="true" ]Device Model: iPhone8,1 Model: n71map ECID: XXXXXXXXXXXXXXXX Serial Number: N/A IMEI: N/A MODE: DFU |
Так выглядят данные через Recovery:
1 2 3 4 5 6 |
[crayon-67593af5d3224357126296 inline="true" ]Device Model: iPhone8,1 Model: n71map ECID: XXXXXXXXXXXXXXXX Serial Number: XXXXXXXXXXX IMEI: XXXXXXXXXXXXXXX MODE: Recovery |
На этом все. Действительно все. Нет даже доступа к зашифрованному разделу данных.
Android
Безопасность Android — бесконечная тема для обсуждения. Если даже Google допускает ошибки (вспомним уязвимость загрузчика, найденную в Nexus 6, позволяющую получить доступ к данным и расшифровать их, не зная кода блокировки), то что говорить о других производителях? Загрузчик смартфона Samsung Galaxy S7 также обладает уязвимостью, позволяющей легко извлечь и расшифровать данные. Если быть точным, то уязвимостью обладает инженерный загрузчик, утечку которого допустила компания. Неустранимая уязвимость есть и в загрузчике OnePlus 6 (после исправления ошибки производителем процедура чуть усложняется: для расшифровки данных потребуется сначала залить в устройство скомпрометированную версию загрузчика через EDL, после чего можно загружаться в кастомное рекавери).
С точки зрения правоохранительных органов смартфоны на Android представляют собой проблему «неуловимого Джо»: на рынке такое количество моделей и модификаций, что разрабатывать автоматизированные скрипты для доступа к данным поставщикам соответствующего оборудования просто некогда. Обычно стреляют по площадям; так, компания Cellebrite разработала линейку специализированных загрузчиков, позволяющих расшифровать данные на некоторых популярных смартфонах Huawei. Задолго до этого компания разработала методику извлечения данных по протоколу EDL, причем для многих устройств получается расшифровать информацию, не зная код блокировки (подробности можно узнать, зарегистрировавшись на вебинар по ссылке). Невозможно с ходу сказать, какой процент устройств на Android подвержен уязвимостям, эксплуатируемым компанией, но список поддерживаемых технологией decrypting bootloader устройств более чем впечатляет. Недавно компания заявила о поддержке моделей Galaxy S8/S8+ на чипсетах Qualcomm и Exynos.
Не отстают и отечественные разработчики. Компанией Oxygen были разработаны методы, позволяющие через уязвимость загрузчика расшифровать данные в ряде смартфонов Motorola, а также использовать для извлечения данных протоколы LG UP (для смартфонов LG) и протокол восстановления MediaTek (для смартфонов на чипсетах MTK, а это — огромная часть Китая).
Впрочем, для извлечения содержимого смартфонов на чипах MediaTek не обязательно пользоваться специализированным софтом. SP Flashtool может залить и сдампить память 99% устройств на MTK без всяких ограничений, причем шифрование в китайских устройствах используется далеко не всегда. Если же шифрование присутствует, то оно представляет определенную проблему (особенно пофайловое, File Based Encryption), но старый метод шифрования раздела данных FDE (Full Disk Encryption) без опционального режима Secure Startup удается обойти с большой вероятностью.
Windows 10 Mobile
В Microsoft давно плюнули на свое мобильное подразделение, поэтому на утечку ключей Secure Boot и обнаруженные два года назад уязвимости в загрузчиках практически всех моделей в компании отреагировали исключительно хладнокровно, полностью проигнорировав существование эксплоитов. (Не совсем понятно, могла ли компания что-то сделать в принципе, с учетом того, что через WDRT всегда прошивается самая первая сборка системы: никакой защиты от отката в устройствах на мобильной Windows предусмотрено не было.) На сегодняшний день через уязвимость загрузчика в смартфонах Lumia можно получить права суперпользователя, извлечь информацию (если не включено опциональное шифрование раздела данных, использующее вполне безопасный BitLocker) или установить на смартфон какую-нибудь другую операционную систему — например, полноценную ARM-сборку Windows 10, Windows RT или Android.
А что с извлечением данных? Все скучно: в Cellebrite уже давно разработали специализированные загрузчики для извлечения данных из смартфонов Lumia (правда, если включить шифрование, то обойти его компании не удается).
BlackBerry 10
Доступа к данным пользователя через режим EDL нет. Точнее, не так: доступ есть, но только если ввести правильный код блокировки устройства (код вводится прямо с компьютера, это штатная особенность системы). Если же не ввести или ввести неправильно, то десять попыток спустя все данные будут уничтожены.
Заключение
Мы рассмотрели широкий спектр решений для восстановления прошивок мобильных устройств. И если для устройств Apple, Microsoft и BlackBerry существуют фирменные утилиты, то для смартфонов с Android сама возможность восстановления прошивки за пределами сервисного центра есть не всегда. Впрочем, для многих устройств на Android доступно не только восстановление фирменной прошивки, но и вариант перехода на прошивку для другого региона, модифицированную или кастомную сборку.