日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

高通、猎户机型Android典型bootloader分析

發(fā)布時間:2025/4/16 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高通、猎户机型Android典型bootloader分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、bootloader是什么?

? ?? ? 簡單地說,bootloader 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。


? ?? ? Android系統(tǒng)基于Linux,所以bootloader部分也是與傳統(tǒng)的嵌入式設(shè)備上運(yùn)行的Linux沒有什么區(qū)別。由于除Google外的大部分Android廠商都沒有提供bootloader的源代碼,所以分析手機(jī)設(shè)備的bootloader需要使用逆向工程的手段,當(dāng)然由于有了Google官方的開源bootloader代碼做參考,能讓分析工作輕松不少。本文中使用的分析工具為IDA 6.5,針對的手機(jī)設(shè)備為N9006,固件版本為N9006ZCUDMK2。


2、bootloader典型結(jié)構(gòu)


? ?? ? 這部分會以高通MSM8960為例子介紹下Bootloader的典型結(jié)構(gòu)。


? ?? ? 高通MSM8960中包含多個運(yùn)算單元,分別負(fù)責(zé)引導(dǎo)過程中的不同功能,sbl1的代碼負(fù)責(zé)加載sbl2,sbl2加載tz和sbl3,sbl3加載apppsbl,appsbl加載HLOS(基帶)。
?

圖1 SecureBoot 3.0 的Code Flow
?
圖2 MSM8960引導(dǎo)過程簡化流程圖


3、Note3的bootloader結(jié)構(gòu)分析


國行版Note3(N9006)使用的CPU是MSM8974,它的bootloader結(jié)構(gòu)與典型的MSM8960差不多,最大的區(qū)別就是把sbl1,sbl2,sbl3整合進(jìn)了一個文件sbl1中,TrustZone和APPSBL都由sbl1進(jìn)行驗(yàn)證和加載,以下為幾個主要功能的加載代碼分析。
? ?? ?sbl1的功能是對硬件進(jìn)行初始化并加載其他模塊,需要加載的模塊信息按順序保存在sbl1中,對應(yīng)每個模塊的數(shù)據(jù)是一段大小為0x64字節(jié)的模塊信息數(shù)據(jù)內(nèi),sbl1中有一個循環(huán)負(fù)責(zé)驗(yàn)證和加載所有需要的其他模塊(tz,rpm,wdt,appsbl),加載代碼會根據(jù)模塊信息內(nèi)的數(shù)據(jù)調(diào)用不同的加載器加載和驗(yàn)證的代碼,具體代碼如下圖。
?

圖3 sbl1中循環(huán)加載全部模塊的代碼
?

圖4 sbl1中對待加載模塊進(jìn)行驗(yàn)證

?

圖5 TZ模塊信息數(shù)據(jù)
?

圖6 APPSBL模塊信息數(shù)據(jù)




? ?? ?固件包里的tz.mbn是加載在TrustZone中的模塊,模塊格式為elf,這個模塊中的代碼和系統(tǒng)其他模塊代碼運(yùn)行在互相隔離的區(qū)域內(nèi),權(quán)限也比其他模塊更高,三星KNOX的很多底層安全特性也是在這部分中實(shí)現(xiàn),關(guān)于TrustZone的更多資料可以參考arm官方的說明。


? ?? ?固件包里的aboot.mbn就是APPSBL模塊,模塊格式為bin,文件最前面的0x28字節(jié)的頭部描述了bin的加載地址等信息,后面的數(shù)據(jù)就是實(shí)際加載到內(nèi)存中的映像,整個bootloader中這個模塊的代碼量最大(很大一部分是openssl的代碼),linux內(nèi)核的驗(yàn)證和加載(正常啟動和Recovery模式),ODIN模式等等代碼都包含在這個模塊內(nèi)。

?

圖7 aboot.mbn文件頭
?

圖8 根據(jù)按鍵和共享內(nèi)存中的數(shù)據(jù)確定引導(dǎo)模式


?

圖9 三星特有的ODIN刷機(jī)模式代碼


4、Note3的bootloader中KNOX系統(tǒng)的底層代碼初步分析


? ?? ? Note3提供了一個企業(yè)安全套裝KNOX,這個系統(tǒng)包含了底層的Customizable Secure Boot和TrustZone-based Integrity Measurement Architecture(TIMA,目前為2.0版本),系統(tǒng)層的SecurityEnhancements for Android(SE-Android)和應(yīng)用層的Samsung KNOX Container,Encrypted File System(EFS),Virtual Private Network(VPN),其中Customizable Secure Boot和TIMA的代碼包含在Bootloader的aboot.mbn,tz.mbn,NON-HLOS.bin中,功能為保障加載的內(nèi)核在加載時和運(yùn)行期的完整性。


? ?? ? 通過前面的分析,我們已經(jīng)知道了tz.mbn和aboot.mbn在加載時已經(jīng)由sbl1驗(yàn)證過完整性,tz.mbn加載后會在CPU的安全環(huán)境下運(yùn)行,從高權(quán)限的隔離區(qū)域內(nèi)對系統(tǒng)的完整性進(jìn)行監(jiān)控,而負(fù)責(zé)加載android內(nèi)核的aboot.mbn中包含對內(nèi)核的完整性檢測,三星在bootloader每一部分的結(jié)尾都會加上自己的簽名,加載前會對簽名進(jìn)行驗(yàn)證,以保障系統(tǒng)未被修改過。


?

圖10??tz.mbn中初始化TIMA系統(tǒng)的的代碼
?

圖11 aboot.mbn中對內(nèi)核是否使用SEANDROID進(jìn)行驗(yàn)證


? ?? ?當(dāng)任何一部分檢測代碼發(fā)現(xiàn)系統(tǒng)異常狀況后,就會調(diào)用SMC指令通知TrustZone中運(yùn)行的TIMA系統(tǒng)設(shè)置fuse為系統(tǒng)完整性被破壞,此fuse數(shù)據(jù)一旦被設(shè)置后沒有辦法被重置,系統(tǒng)也無法再次進(jìn)入KNOX系統(tǒng)。
?
圖12 加載內(nèi)核前對內(nèi)核簽名和TIMA的測點(diǎn)進(jìn)行驗(yàn)證
?
圖13 系統(tǒng)完整性檢測失敗后設(shè)置fuse值

? ?? ? 當(dāng)以上所有檢測都通過后,bootloader會把內(nèi)核復(fù)制到指定的內(nèi)存地址并跳到內(nèi)核的入口繼續(xù)執(zhí)行,到此,就進(jìn)入了系統(tǒng)內(nèi)核代碼的范疇,bootloader的使命也就完成了,跳到linux內(nèi)核入口的代碼見圖14。
?

圖14 內(nèi)核加載和校驗(yàn)完成后跳到內(nèi)核的入口點(diǎn)繼續(xù)執(zhí)行


? ?? ? 另外,除了這兩個模塊外Modem固件相關(guān)的NON-HLOS.bin中也有大量TIMA系統(tǒng)相關(guān)的文件,由于TIMA系統(tǒng)包含大量硬件相關(guān)代碼(使用三星獵戶座CPU的N900中TIMA系統(tǒng)的實(shí)現(xiàn)與高通CPU的N9006差別很大),如果需要進(jìn)行進(jìn)一步的分析TIMA在modem中的行為,需要對TrustZone,modem工作方式等有更多了解。
?

圖15 NON-HLOS.bin中包含的大量TIMA相關(guān)文件
(全文來自網(wǎng)絡(luò),有刪改)

總結(jié)

以上是生活随笔為你收集整理的高通、猎户机型Android典型bootloader分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。