AOSP源碼定制-對(duì)root定制的補(bǔ)充
介紹
前面通過(guò)修改build.prop中的指紋以及對(duì)su的修改,完成了基礎(chǔ)的定制修改,但是碰上一些app還是能被檢測(cè)到,再進(jìn)行深入修改。
問(wèn)題引入
ro.vendor相關(guān)
發(fā)現(xiàn)測(cè)試一個(gè)app時(shí)總是開(kāi)不起來(lái),但是測(cè)試別人編譯好的脫殼機(jī)卻能運(yùn)行,最后其實(shí)只是ro.debuggable的問(wèn)題,但是在分析的過(guò)程中發(fā)現(xiàn)了其他幾處遺漏沒(méi)有抹除的特征。
這里很明顯,ro.vendor.build的一些參數(shù)是有aosp的特征,沒(méi)有改成user版本,tests-key。
找了半天沒(méi)有找到對(duì)應(yīng)的修改點(diǎn),查了資料,看了下目錄才反應(yīng)過(guò)來(lái),vendor鏡像是一開(kāi)始下驅(qū)動(dòng),運(yùn)行腳本時(shí)直接打包放在vendor目錄下了,是谷歌自己給我編譯好的。
要修改找了資料,有好幾種,一種重新編譯,一種解包修改再壓縮,兩種方法都試了,最后都是沒(méi)有效果。
這里我解包修改再重打包,out目錄下,vendor相關(guān)的屬性已經(jīng)修改完成。
編譯刷機(jī)后,還是沒(méi)效果。
通過(guò)啟動(dòng)流程修改
繼續(xù)查資料,可以明確一個(gè)事,目前app檢測(cè)prop相關(guān)屬性,多通過(guò)getprop命令,或者通過(guò)反射調(diào)用android.os.SystemProperties來(lái)檢測(cè),它并不會(huì)讀到/system/build.prop,/vendor/build.prop文件。
那我們只需要在系統(tǒng)啟動(dòng)時(shí),找到對(duì)應(yīng)讀取prop文件的流程,在中間處理一下,做點(diǎn)手腳就可以了。
查閱源碼,找到啟動(dòng)流程中載入prop配置文件的關(guān)鍵位置:
這里的關(guān)鍵函數(shù)是load_properties_from_file,查找跟進(jìn)。
這里繼續(xù)跟進(jìn)load_properties,很明顯了,他會(huì)讀取,然后通過(guò)property_set方法,按鍵值對(duì)寫入。
我們可以在這里加個(gè)判斷,匹配自己要修改的特征,然后自己去set。
再編譯刷機(jī),此時(shí)通過(guò)getprop命令獲取到的已經(jīng)是替換后的屬性值了,但是文件中的是不修改的。
adb相關(guān)
再測(cè)試發(fā)現(xiàn)還是被檢測(cè),繼續(xù)排查,發(fā)現(xiàn)是ro.debuggable的問(wèn)題。
我將該值置為零,再編譯發(fā)現(xiàn)不檢測(cè)了。
但是會(huì)存在問(wèn)題,進(jìn)系統(tǒng),切到su,data等目錄不再有權(quán)限訪問(wèn),這是不能接受的。
這里補(bǔ)充一點(diǎn)東西。
adb的root權(quán)限是由system/core/adb/adb.c 中控制。主要根據(jù)ro.secure以及ro.debuggable等system property來(lái)控制。
默認(rèn)當(dāng)ro.secure為0時(shí),開(kāi)啟root權(quán)限,為1時(shí)再根據(jù)ro.debuggable等選項(xiàng)來(lái)確認(rèn)是否可以用開(kāi)啟root權(quán)限,一般會(huì)降權(quán)返回一個(gè)shell用戶權(quán)限。因此如果要開(kāi)啟adb的root權(quán)限,有兩種修改的方式:
修改system property ro.secure, 讓ro.secure=0。
修改adb.c 中開(kāi)啟root 權(quán)限的判斷邏輯。
但1方法顯然是很容易被檢測(cè)到,正常手機(jī)ro.secure的值都是1。
所以直接將ro.debuggable=0,修改adb源碼,達(dá)到不降權(quán)的目的。
這里就修改一處即可。
將這里的降權(quán)判斷函數(shù),返回值強(qiáng)恒為false即可。
再測(cè)試adb直接返回了root用戶權(quán)限,且ro.debuggable仍然為0。
總結(jié)
主要學(xué)習(xí)到的還是通過(guò)修改啟動(dòng)流程中的載入prop過(guò)程,達(dá)到抹去特征,可以將之前修改的特征通通使用這個(gè)方法進(jìn)行抹除,更加簡(jiǎn)單。
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
112文章
16361瀏覽量
178030 -
AOSP
+關(guān)注
關(guān)注
0文章
16瀏覽量
6196 -
adb
+關(guān)注
關(guān)注
1文章
35瀏覽量
10424
原文標(biāo)題:AOSP源碼定制-對(duì)root定制的補(bǔ)充
文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論