Что подразумевается под заблокированным загрузчиком?

Все жалуются на заблокированные загрузчики на телефонах. Судя по загрузчику, код хранится в разделе, который смонтирован /boot. После того, как телефон рутирован, почему нельзя просто удалить то, что находится в / boot, и поместить туда свои собственные вещи. Когда вы выполняете OTA и обновляете загрузчик, я предполагаю, что он просто записывает файлы в этот раздел.

В дистрибутиве Linux я могу заменить grub, который хранится в boot, на LILO или что-то еще, просто заменив файлы в /boot и записав PBR в заголовок этого раздела, чтобы затем загрузиться в LILO. Когда ПК загружается, он просматривает MBR, который говорит ему посмотреть на активный раздел (вероятно, с /boot), связать его и прочитать код LILO в начале, который затем делает что-то со всеми другими файлами в /boot .

Как устройства Android загружаются по-разному, что предотвращает это?

@KaranRajBaruah - Спасибо, я читал это некоторое время назад. Я до сих пор не понимаю, почему если у вас есть рутированное устройство, вы не можете заменить раздел /boot. Загрузчик не вшит в телефон. Не думаю, что это сравнимо с переписыванием BIOS, скорее с переписыванием того, что находится на этом монтируемом разделе.

Ответы (1)

Загрузчик вообще не на /bootразделе, а на отдельном, хотя суть вопроса не в этом.

Проблема возникает, когда загрузчик имеет криптографическую подпись, которая предназначена для предотвращения замены его собственным. Устройство проверит подпись загрузчика при запуске и откажется загружать загрузчик с недействительной подписью. После этого загрузчик проверяет подпись всего, что находится в /boot, отказываясь загружать это, если оно не подписано правильно. Таким образом, вы не можете перезаписать ни один из разделов без того, чтобы устройство перестало загружаться.

Когда загрузчик разблокирован, он не будет проверять подпись других образов разделов, поэтому вы можете устанавливать пользовательские ПЗУ. Это означает, что вам не нужно заменять загрузчик, чтобы изменить /boot, вам просто нужно разблокировать его, чтобы он пропускал проверку подписи на /boot. Если загрузчик заблокирован и подписан, то вы, по сути, застряли, за исключением эксплойта, который позволяет вам обойти один из шагов проверки подписи.

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

Этот процесс (более или менее) аналогичен безопасной загрузке UEFI , хотя, вероятно, это не совсем та же архитектурная реализация. Кстати, в вашем примере с Linux одно из основных критических замечаний по поводу безопасной загрузки UEFI заключается в том, что ее потенциально можно использовать для предотвращения установки альтернативных ОС на традиционные ПК с помощью той же схемы проверки подписи.

Возьмем GS4. Есть то, что жестко прожжено в телефоне. Это похоже на EFI или BIOS и НЕ может быть изменено. Проверка подписи на BL жестко запрограммирована. Сначала Samsung был крут и предоставил (подписанный?) BL, который не заботился о том, какой ПЗУ он загружал в / boot (разблокировал). Поскольку у Samsung есть ключи, они могут обновить BL и подписать его. Они решили обновить BL OTA и включить проверку подписи в ПЗУ. Это по существу заблокировало загрузчик. Заблокированное или разблокированное все, что находится в разделе BL, должно быть подписано кодом, потому что телефон жестко закодирован для проверки и его нельзя отключить.
Это верно? Если да, то почему нельзя просто положить старый разблокированный код в раздел BL? Также возможно изменить то, что загружает BL, подобно перепрошивке BIOS, или это прямо жестко закодировано в плате. Спасибо за информативный ответ кстати.
Теоретически, даунгрейд был бы вариантом, и большинство мододелов, вероятно, рассмотрят этот вопрос. На практике это может быть не совсем просто сделать. Я не знаю конкретно о Samsung, но другие производители ввели программные ограничения, чтобы вы не могли понизить загрузчик обычными способами. Это может быть зависанием и в вашем примере, и для этого потребуется найти способ написать загрузчик вне поддерживаемых методов.
Что касается изменения стадии перед загрузчиком: опять же, это возможно в теории. У Kindle Fire был загрузчик первого этапа, доступный для записи. Тем не менее, код для такого загрузчика может быть недоступен публично (большинство загрузчиков в этом отношении проприетарны), поэтому изменение первого этапа, вероятно, будет затруднено. Я также не уверен, все ли телефоны используют загрузчик первого этапа одинаково, или он доступен только для чтения на тех, которые это делают. Вероятно, было бы разумно, если бы он жил в памяти только для чтения, поскольку необходимость ее обновления была бы маловероятной.
Как бы BL не был доступен для записи? Разве это не просто разделы на внутренней флэш-памяти (прославленная внутренняя SD-карта)
Они есть, но без прав root вы не можете их смонтировать. Если бы вы могли получить root и у вас был доступ к более старому, разблокированному (но все еще подписанному) загрузчику, то я полагаю, что вам, вероятно, удалось бы каким-то образом понизить его версию. Как я уже сказал, меня не особо интересует ситуация с S4, поэтому я не знаю, могут ли там быть какие-то другие факторы.