Varsayılan olarak, çoğu Android cihazı kilitli bir önyükleyiciyle birlikte gelir; bu, kullanıcıların önyükleyiciyi veya cihaz bölümlerini flashlayamayacağı anlamına gelir. Gerekirse siz (ve Geliştirici seçenekleri etkin olan cihaz kullanıcıları), yeni görüntüleri flaş etmek için önyükleyicinin kilidini açabilirsiniz.
Bootloader'a girme
fastboot
komutlarını vermek için önyükleyici modunda olmanız gerekir. Bunu yapmanın bir yolu adb komutunu adb reboot bootloader
göndermektir. Bazı telefonlar, cihazı başlatırken bir tuş kombinasyonuna (genellikle ses kısma) basarak önyükleyiciyi yeniden başlatmanıza da olanak tanır.
Önyükleyicinin kilidini açma
Önyükleyici moduna girdikten sonra, önyükleyicinin kilidini açmak ve bölümlerin yeniden başlatılmasını sağlamak için cihazda fastboot flashing unlock
komutunu çalıştırın. Ayarlamanın ardından, kilit açma modu yeniden başlatmalarda devam eder.
get_unlock_ability
1
olarak ayarlanmadığı sürece cihazlar fastboot flashing unlock
komutunu reddetmelidir. 0
olarak ayarlanırsa kullanıcının ana ekrana önyükleme yapması, Ayarlar > Sistem > Geliştirici seçenekleri menüsünü açması ve OEM kilit açma seçeneğini etkinleştirmesi gerekir (bu, get_unlock_ability
1
olarak ayarlar). Ayarlamanın ardından bu mod, yeniden başlatmalarda ve fabrika verilerine sıfırlamalarda devam eder.
fastboot flashing unlock
komutu gönderildiğinde, cihaz kullanıcıları resmi olmayan görüntülerle ilgili sorunlarla karşılaşabilecekleri konusunda uyarmalıdır. Kullanıcının uyarıyı kabul etmesinden sonra izinsiz verilere erişimi önlemek için cihazın fabrika verilerine sıfırlama işlemi yapması gerekir. Önyükleyici, cihazı düzgün şekilde yeniden biçimlendiremese bile cihazı sıfırlamalıdır. Yalnızca sıfırlamadan sonra kalıcı bayrak, cihazın yeniden başlatılabilmesi için ayarlanabilir.
fastboot flashing unlock
işlemi sırasında üzerine yazılmayan tüm RAM'lerin sıfırlanması gerekir. Bu önlem, önceki önyüklemeden kalan RAM içeriğini okuyan saldırıları önler. Benzer şekilde, kilidi açılmış aygıtlar her önyüklemede RAM'i temizlemeli (bu, kabul edilemez bir gecikme yaratmadığı sürece), ancak çekirdeğin ramoops
için kullanılan bölgeyi terk etmelidir.
Önyükleyiciyi kilitleme
Önyükleyiciyi kilitlemek ve cihazı sıfırlamak için cihazda fastboot flashing lock
komutunu çalıştırın. Saldırganların yeni bir sistem veya önyükleme görüntüsü kurarak cihazı tehlikeye atamayacağından emin olmak için, perakende satışa yönelik cihazlar kilitli durumda gönderilmelidir ( get_unlock_ability
0
değerini döndürerek).
Kilitleme/kilit açma özelliklerini ayarlama
ro.oem_unlock_supported
özelliği, cihazın yanıp sönerek kilit açmayı destekleyip desteklemediğine bağlı olarak derleme sırasında ayarlanmalıdır.
- Cihaz yanıp sönerek kilit açmayı destekliyorsa
ro.oem_unlock_supported
değerini1
olarak ayarlayın. - Cihaz yanıp sönerek kilit açmayı desteklemiyorsa
ro.oem_unlock_supported
değerini0
olarak ayarlayın.
Cihaz, yanıp sönerek kilit açmayı destekliyorsa, önyükleyici, androidboot.flash.locked
çekirdek komut satırı değişkenini kilitliyse 1
, kilidi açıksa 0
ayarlayarak kilit durumunu belirtmelidir. Bu değişkenin Android 12'deki çekirdek komut satırı yerine bootconfig'te ayarlanması gerekir.
dm-verity'yi destekleyen cihazlar için ro.boot.verifiedbootstate
kullanarak ro.boot.flash.locked
değerini 0
olarak ayarlayın; doğrulanmış önyükleme durumu turuncu ise bu, önyükleyicinin kilidini açar.
Kritik bölümlerin korunması
Cihazlar, cihazı önyükleyiciye başlatmak için gerekenler olarak tanımlanan kritik bölümlerin kilitlenmesini ve kilidinin açılmasını desteklemelidir. Bu tür bölümler sigortaları, sensör hub'ı için sanal bölümleri, birinci aşama önyükleyiciyi ve daha fazlasını içerebilir. Kritik bölümleri kilitlemek için cihazda çalışan kodun (çekirdek, kurtarma görüntüsü, OTA kodu vb.) herhangi bir kritik bölümü kasıtlı olarak değiştirmesini önleyen bir mekanizma kullanmalısınız. Cihaz kritik kilit durumundaysa OTA'lar kritik bölümleri güncellemede başarısız olmalıdır.
Kilitli durumdan kilitsiz duruma geçiş, cihazla fiziksel bir etkileşim gerektirmelidir. Bu etkileşim fastboot flashing unlock
komutunu çalıştırmanın etkilerine benzer ancak kullanıcının cihazdaki fiziksel bir düğmeye basmasını gerektirir. Cihazlar, fiziksel etkileşim olmadan lock critical
unlock critical
programlı geçişe izin vermemeli ve cihazlar unlock critical
durumunda gönderilmemelidir.