Qualcomm Bootloader Unlock: AVB2 Güvenlik Zinciri, Exploit Bypass ve EDL Modu Rehberi
Qualcomm chipsetli cihazlarda Normal Boot Sequence (AVB2), Exploit Bypass mekanizması, vbmeta manipülasyonu, Keymaster TA güvenlik açığı ve DFTPro / trtool ile UBL işlemleri — teknik servis uzmanları için adım adım kılavuz.
§1 Normal Boot Sequence (AVB2) Nasıl İşler?
Qualcomm platformunda cihaz her açıldığında sahnede görünmeyen ama son derece kritik bir kontrol zinciri devreye girer: Android Verified Boot 2.0, kısaca AVB2. Bu sistem, cihazın en düşük seviyesinden işletim sistemine kadar her katmanın doğrulanmasını sağlar. Servis teknisyeni açısından şunu bilmek yeterlidir: AVB2 aktifken imzalanmamış hiçbir kod çalışamaz, bootloader kilidi açılamaz.
NORMAL / AVB2
START
→
PBL/SBL
Secondary BL
→
GPT
Reads vbmeta
→
ABL
Is_VERIFIED=TRUE
→
SECURE
BOOT PATH
→
KEYMASTER
TA LOCKED
→
RPMB
is_unlocked=0
→
SYSTEM
BOOTS SECURE
PBL / SBL: İlk İki Katman
Boot sekansı PBL (Primary Bootloader) ile başlar. PBL çipe doğrudan yazdırılmış olduğundan değiştirilemez. Bu katman SBL’yi (Secondary Bootloader) yükler ve imzasını kontrol eder. İmza geçersizse işlem o noktada durur — sistem bir daha açılmaz.
GPT Okuma ve vbmeta Denetimi
SBL başarıyla yüklendikten sonra depolama biriminindeki GPT (GUID Partition Table) okunur. GPT içinde vbmeta adlı kritik bir bölüm bulunur. ABL (Android Bootloader) bu bölümü okuyarak Is_VERIFIED_BOOT_2() fonksiyonunu çağırır. Sonuç TRUE dönerse sistem güvenli önyükleme yoluna girer.
Keymaster TA ve RPMB Kilidi
Güvenli önyükleme yolunda Keymaster Trusted Application (TA) devreye girer. Bu uygulama KEYMASTER_MILESTONE_CALL ile çağrılır ve WRITE_KM_DEVICE_STATE komutunu devre dışı bırakır — yani cihazın kilit durumunu değiştirmeye izin vermez. Son olarak RPMB (Replay Protected Memory Block) bölgesine is_unlocked=0 yazılır ve sistem güvenli şekilde açılır.
AVB2 zinciri sağlam çalışan bir cihazda bootloader unlock için üretici onayı veya fabrika kilidi açma komutu gerekir. Zincirin herhangi bir halkasında imza bütünlüğü bozulursa sistem açılmayı reddeder.
Normal Sekans Karşılaştırma Tablosu
| Aşama | Sonuç | Açıklama |
|---|---|---|
| Is_VERIFIED_BOOT_2() | TRUE | vbmeta bölümü geçerli ve imzalı |
| KEYMASTER_MILESTONE_CALL | Çalıştırılıyor | Keymaster TA kilitli durumda kalıyor |
| WRITE_KM_DEVICE_STATE | Devre Dışı | Durum değişikliği engellendi |
| RPMB → is_unlocked | 0 | Cihaz kilitli olarak işaretlendi |
§2 Exploit Boot Sequence (Bypass) Mekanizması
Exploit yöntemi AVB2 zincirini kırmaz — tersine onu devre dışı bırakarak sistemi sanki vbmeta yokmuş gibi davranmaya zorlar. Temel fikir son derece basit ama etkileri derindir: GPT tablosundaki vbmeta bölümü yeniden adlandırılır ve ABL bu bölümü bulamayınca doğrulamayı atlayarak No_AVB yoluna geçer.
EXPLOIT / BYPASS
USER
ACTION
→
PBL/SBL
Mod. GPT
→
GPT
vbmeta YOK
→
ABL
Is_VERIFIED=FALSE
→
NO_AVB
PATH
→
KEYMASTER
UNLOCKED
→
PoC RUNS
WR_KM_DEV
→
RPMB
is_unlocked=1
→
BL
UNLOCKED
vbmeta → xbmeta: Küçük Değişiklik, Büyük Sonuç
Exploit’in kalbi tek bir isim değişikliğidir. GPT tablosunda vbmeta bölümü xbmeta olarak yeniden adlandırıldığında ABL artık bu bölümü tanıyamaz. Is_VERIFIED_BOOT_2() fonksiyonu FALSE döner ve sistem NO_AVB PATH yoluna yönlendirilir.
– Partition: vbmeta <– ABL bu bölümü arar ve doğrulama yapar
+ Partition: xbmeta <– ABL bulamaz → Is_VERIFIED = FALSE
# Sonuç:
# KEYMASTER_MILESTONE_CALL ATLANIR
# WRITE_KM_DEVICE_STATE ENGELLENMEDİ → Exploit aktif
PoC (Proof of Concept) Çalışması
Sistem NO_AVB yoluna geçtikten sonra Keymaster TA kilitsiz durumdadır. Bu noktada exploit kodu WRITE_KM_DEVICE_STATE komutunu çalıştırarak RPMB bölgesine is_unlocked=1 yazar. İşlem tamamlandığında DeviceInfo değeri değişmiş ve bootloader kilidi kalıcı olarak açılmış olur.
Bu işlem cihaz garantisini geçersiz kılar ve RPMB bölgesini kalıcı olarak değiştirir. Bazı cihaz modellerinde bu değişiklik geri alınamaz. İşlemi yapmadan önce GPT yedeğini almanız zorunludur.
Normal ve Exploit Sekansı Karşılaştırması
| Parametre | Normal (AVB2) | Exploit (Bypass) |
|---|---|---|
| vbmeta bölümü | Mevcut ve imzalı | xbmeta adıyla gizlendi |
| Is_VERIFIED_BOOT_2() | TRUE | FALSE |
| Keymaster TA | LOCKED | UNLOCKED |
| WRITE_KM_DEVICE_STATE | Devre Dışı | Aktif (PoC çalışıyor) |
| RPMB is_unlocked | 0 (Kilitli) | 1 (Açık) |
| Sonuç | System Boots Secure | Bootloader Unlocked |
§3 DFTPro ile Qualcomm Bootloader İşlemleri
DFTPro (Device Firmware Tool Pro), sahada en yaygın kullanılan Qualcomm servis yazılımlarından biridir. Qualcomm EDL (Emergency Download) protokolü üzerinden cihazla doğrudan iletişim kurarak yazılım yükleme, bölüm okuma/yazma ve bootloader işlemleri gerçekleştirir.
DFTPro’nun Temel Yetenekleri
DFTPro ile Qualcomm platformunda şu işlemler yapılabilir: GPT tablosunu okuma ve yazma, bölüm bazlı yedekleme/geri yükleme, FRP (Factory Reset Protection) bypass, bootloader durumu sorgulama ve özel bölümlere doğrudan veri yazma. Bu işlemlerin büyük çoğunluğu cihaz EDL modundayken gerçekleştirilir.
DFTPro ile GPT üzerinde işlem yaparken yanlış bölüm adı veya yanlış dosya kullanımı cihazı kalıcı olarak kullanılamaz hale getirebilir. Her zaman önce tam GPT yedeği alın.
DFTPro ile GPT Üzerinde vbmeta İşlemi
Exploit sürecinde DFTPro, EDL modundaki cihazın GPT tablosunu okur. Tablodaki bölüm isimleri listelendikten sonra vbmeta bölümü seçilir ve HEX düzeyinde isim değişikliği yapılarak xbmeta‘ya dönüştürülür. Değiştirilen GPT cihaza geri yazılır ve cihaz yeniden başlatılır.
| İşlem | DFTPro Adımı | Açıklama |
|---|---|---|
| Cihaz Tanıma | EDL → Detect | CPID ve HWID okunur |
| GPT Okuma | Read GPT | Tüm bölüm tablosu dump edilir |
| vbmeta Rename | Edit Partition | vbmeta → xbmeta değiştirilir |
| GPT Yazma | Write GPT | Değiştirilmiş tablo geri yazılır |
| Exploit | Run PoC | WRITE_KM_DEVICE_STATE çalıştırılır |
§4 Trtool ve EDL Modu Kullanımı
EDL (Emergency Download Mode), Qualcomm’un tüm chipsetleri için donanım düzeyinde yazılı gelen bir acil kurtarma modudur. PBL seviyesinde çalıştığından işletim sisteminin durumundan bağımsızdır — cihaz tamamen brick olmuş bile olsa bu mod çoğunlukla çalışır. Trtool ise özellikle bu protokol üzerinden çalışan, sahada yaygınlaşmış açık kaynaklı bir Qualcomm servis aracıdır.
EDL Modunun Tetiklenmesi
Cihazı EDL moduna almak için birkaç yöntem bulunur. En güvenilir yöntem anakart üzerindeki EDL test noktalarını kısa devre ettirmektir. Bazı cihazlarda adb reboot edl komutu işe yarar; ancak bu yöntem ADB erişiminin mevcut olmasını gerektirir. Pil tamamen boşaldığında bazı cihazlar otomatik EDL moduna da geçebilir.
EDL test noktaları genellikle USB konnektörüne yakın ya da pil konektörü çevresinde konumlanır. Cihaza özel şematik olmadan bu noktaları bulmak zordur — her zaman cihaz modeline ait servis şematiklerini referans alın.
Trtool ile Temel İşlemler
| Trtool Komutu | İşlev |
|---|---|
| trtool detect | CPID, HWID ve yazılım versiyonunu okur |
| trtool gpt read | GPT tablosunu dosyaya dump eder |
| trtool gpt write | Modifiye GPT tablosunu cihaza yazar |
| trtool partition dump | Belirtilen bölümü yedekler |
| trtool partition flash | Belirtilen bölümü yazar |
Trtool’u DFTPro’dan ayıran en önemli özellik, programatik erişim imkânı sunmasıdır. Servis teknisyenleri batch script veya Python scriptleri aracılığıyla tekrarlayan işlemleri otomatize edebilir. Bu, özellikle seri üretimde aynı modelin bootloader unlock işleminin tekrarlanması gereken durumlarda ciddi zaman tasarrufu sağlar.
§5 CPID (Chip ID) Öğrenmenin Önemi
CPID, Qualcomm chipinin benzersiz donanım kimliğidir. Her Qualcomm SoC modelinin kendine özgü bir CPID değeri vardır ve bu değer EDL modunda sorgulandığında doğrudan PBL’den okunur. Yanlış CPID değeriyle çalışmak yanlış EDL yazılımı yüklenmesine ve cihazın kalıcı hasar görmesine yol açabilir.
CPID Neden Bu Kadar Kritik?
Qualcomm ekosisteminde EDL protokolü cihaza özel firehose loader dosyaları kullanır. Bu loader dosyaları yalnızca belirli CPID değerleriyle uyumlu olarak derlenir. SM8350 (Snapdragon 888) için hazırlanmış bir loader, SM7450 (Snapdragon 778G) cihazında kesinlikle çalışmaz ve çalıştırılmaya zorlanırsa cihaz yanıt vermez hale gelebilir.
| Bilgi | Nerede Kullanılır? | Yanlış Olursa |
|---|---|---|
| CPID | Firehose loader seçimi | Yanlış loader → Brick riski |
| HWID | EDL protokol doğrulama | EDL bağlantısı reddedilir |
| SW_ID | Yazılım güvenlik versiyonu | Exploit uyumsuzluğu |
Her servis işleminden önce CPID’yi kaydedin. DFTPro ve trtool EDL modunda cihazı tanıdıktan sonra bu değeri otomatik listeler. Servis formuna da not düşmeyi alışkanlık haline getirin.
§6 UBL (Unlock Bootloader) Adım Adım Rehber
Aşağıdaki prosedür Qualcomm tabanlı cihazlarda exploit yöntemiyle bootloader unlock işlemini adım adım açıklar. Her adım önceki adıma bağlıdır — sıra atlamak ciddi risklere yol açar.
Bu işlem cihazı kalıcı olarak değiştirir. Müşterinin onayı olmadan yapılmamalıdır. Tüm önemli veriler yedeklenmeli, cihaz modeli ve CPID doğrulanmalıdır.
CPID, HWID ve SW_ID değerleri okunur. Bu bilgiler hem işlemde kullanılacak loader dosyasını belirler hem de servis formuna işlenir.
Ayrıca cihazın bootloader durumu kontrol edilir: zaten unlock ise işleme gerek yoktur. adb shell getprop ro.boot.flash.locked komutu 1 dönüyorsa cihaz kilitlidir.
EDL bağlantısı doğrulandıktan sonra kısa devre kaldırılır — cihaz EDL modunda kalmaya devam eder.
trtool gpt read gpt_backup.bin komutu kullanılır. Yedek dosya güvenli bir yerde saklanır.
GPT yedeği olmadan bir şeyler ters giderse kurtarma neredeyse imkânsız olur. Bu adım sigorta poliçenizdir.
vbmeta bölüm adı bulunur ve xbmeta olarak değiştirilir (HEX karşılıkları aynı uzunluktadır). Değiştirilen GPT dosyası kaydedilir.
– 76 62 6D 65 74 61 (vbmeta)
+ 78 62 6D 65 74 61 (xbmeta)
# ‘v’ → ‘x’ : 0x76 → 0x78
DFTPro kullananlar için bu işlem grafik arayüz üzerinden bölüm listesinden vbmeta seçilerek yeniden adlandırma penceresiyle yapılabilir.
vbmeta bulunamayacağından Is_VERIFIED_BOOT_2() FALSE döner ve sistem NO_AVB yoluna geçer.
Bu noktada PoC (Proof of Concept) exploit kodu çalıştırılır. Keymaster TA kilitsiz durumda olduğundan WRITE_KM_DEVICE_STATE komutu başarıyla işler ve RPMB bölgesine is_unlocked=1 yazılır.
adb shell getprop ro.boot.flash.locked
> 0 (Başarılı — Unlock)
fastboot getvar unlocked
> yes (Başarılı)
Fastboot üzerinden unlocked: yes çıktısı alınması işlemin başarıyla tamamlandığını doğrular. Bu aşamada cihazın normal şekilde açıldığını ve temel işlevlerin çalıştığını kontrol edin.
is_unlocked=1 değeri kalıcı olduğundan bootloader unlock durumu korunur.
Bu adım özellikle müşteriye cihazı teslim ederken sistemin temiz görünmesini sağlamak amacıyla tercih edilir.
§7 RPMB ve Keymaster TA Güvenlik Açığı
Bu exploit’in çalışmasını mümkün kılan temel güvenlik açığı, AVB2 doğrulamasının başarısız olduğunda (FALSE döndüğünde) sistemin Keymaster TA’yı yine de çalışır durumda bırakmasından kaynaklanır. Normal tasarım beklentisi şu olmalıydı: doğrulama başarısız olursa sistem tamamen durmalı veya Keymaster kilitli kalmalıydı. Oysa mevcut implementasyonda NO_AVB yolunda Keymaster TA erişilebilir kalıyor.
RPMB: Neden Bu Kadar Kritik?
RPMB (Replay Protected Memory Block), eMMC veya UFS depolama biriminin içine entegre edilmiş özel bir güvenlik bölgesidir. Bu bölgeye yazma işlemi donanım imzası gerektirir ve replay saldırılarına karşı korunmaktadır. Bootloader durum bilgisi (is_unlocked değeri) bu bölgede tutulur.
| Bileşen | Görev | Exploit Etkisi |
|---|---|---|
| RPMB | is_unlocked değerini saklar | is_unlocked=1 kalıcı yazıldı |
| Keymaster TA | Kilit durumunu korur | NO_AVB yolunda kilitsiz kaldı |
| vbmeta | AVB2 doğrulaması için referans | xbmeta adıyla gizlendi |
| ABL | Is_VERIFIED_BOOT_2() çağrısı | FALSE döndü, no_avb path seçildi |
RPMB bölgesine yapılan yazma işlemi geri alınamaz. Bu nedenle bazı üreticiler belirli modellerinde RPMB değeri değiştirilen cihazlarda OTA güncellemelerini engelleyebilir veya cihazı tamamen kilitleyebilir. Model bazlı araştırma yapmak şarttır.
§8 Teknik Servis Uzmanları İçin Pratik İpuçları
Yıllarca sahada Qualcomm cihazlarla çalışan teknisyenlerin paylaştığı gözlemler şu ortak paydada buluşur: en çok vakit kaybettiren şey yanlış loader seçimi ve GPT yedeksiz çalışmaktır. Bu iki hatadan kaçınırsanız işlemlerin büyük çoğunluğu sorunsuz tamamlanır.
| Durum | Doğru Yaklaşım |
|---|---|
| Cihaz EDL’de görünmüyor | USB driver’ı yeniden yükle, farklı USB portu dene, test noktalarını kontrol et |
| Yanlış loader mesajı | CPID’yi yeniden oku ve doğru loader dosyasını seç |
| GPT write hatası | Sektör boyutunu kontrol et; eMMC ve UFS farklı boyutlar kullanabilir |
| Exploit sonrası cihaz açılmıyor | GPT yedeğini geri yükle, vbmeta partisyon boyutunu kontrol et |
| is_unlocked hâlâ 0 | PoC doğru çalışmadı; Keymaster TA durumunu logdan kontrol et |
Çalışma Ortamı Hazırlığı
Qualcomm servis işlemleri için Windows 10/11 64-bit, güncel Qualcomm USB Composite Driver ve en az USB 2.0 (tercihen USB 3.0) bağlantısı gerekir. Sanal makineler üzerinde EDL işlemi yapmak USB latency sorunları nedeniyle sık sık başarısızlıkla sonuçlanır — mümkünse fiziksel makine kullanın.
Servis bilgisayarınızda her Qualcomm platform ailesi için ayrı bir loader klasörü tutun: SM6xxx, SM7xxx, SM8xxx gibi. Bu düzenleme acil durumlarda doğru loader’ı bulmayı çok hızlandırır.
Müşteri İletişimi
Bootloader unlock talepleri her zaman yazılı müşteri onayıyla belgelenmelidir. Garanti iptali, veri kaybı riski ve RPMB değişikliğinin kalıcılığı konusunda müşteriyi açıkça bilgilendirin. Bu koruma hem müşteriyi hem de servisi olası anlaşmazlıklardan korur.
§9 Sonuç ve Öneriler
Qualcomm bootloader unlock konusu, hem güvenlik araştırmacıları hem de cep telefonu servis teknisyenleri için son derece önemli bir alan olmaya devam etmektedir. AVB2 güvenlik zincirinin vbmeta bölümüne olan bağımlılığı, GPT manipülasyonu yoluyla NO_AVB yolunun tetiklenmesine ve ardından Keymaster TA üzerinden RPMB’ye kalıcı yazım yapılmasına zemin hazırlar.
Bu yöntemin teknik olarak elegantlığı şuradan gelir: sistemi hacklemez, sistemin kendi mekanizmalarını kullanarak sistemi kandırır. vbmeta bölümünü gizlemek AVB2’yi devre dışı bırakmaz; sadece ABL’nin onu bulamamasını sağlar. Geri kalanını cihaz kendi başına halleder.
Servis teknisyeni açısından çıkarılacak en kritik ders şudur: GPT yedeksiz hiçbir işlem yapılmamalıdır. Sonraki en kritik ders ise şudur: CPID doğrulanmadan loader seçilmemelidir. Bu iki kurala uyulduğunda işlem başarısız bile olsa geri dönüş her zaman mümkündür.
1 — GPT yedeği al. 2 — CPID’yi doğrula. 3 — Müşteriden yazılı onay al. 4 — Doğru loader seç. 5 — İşlem sonrası bootloader durumunu fastboot ile doğrula.
Qualcomm ekosistemi sürekli gelişmekte; üreticiler her yeni model ve güncellemeyle bu açığı kapatan yamalar yayımlamaktadır. Servis alanındaki gelişmeleri takip etmek, hangi modellerde hangi yöntemlerin hâlâ geçerli olduğunu bilmek ve yeni araçları öğrenmek profesyonel bir Qualcomm servis teknisyeninin sürekli gündeminde olmalıdır.


