0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AOSP源碼定制-對(duì)root定制的補(bǔ)充流程

哆啦安全 ? 來(lái)源:gakki的童養(yǎng)夫 ? 2024-04-01 11:04 ? 次閱讀

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)有抹除的特征。

98822c94-e9a9-11ee-a297-92fbcf53809c.png

這里很明顯,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目錄下了,是谷歌自己給我編譯好的。

988e582a-e9a9-11ee-a297-92fbcf53809c.png

要修改找了資料,有好幾種,一種重新編譯,一種解包修改再壓縮,兩種方法都試了,最后都是沒(méi)有效果。

這里我解包修改再重打包,out目錄下,vendor相關(guān)的屬性已經(jīng)修改完成。

9894d4fc-e9a9-11ee-a297-92fbcf53809c.png

編譯刷機(jī)后,還是沒(méi)效果。

98ad1d6e-e9a9-11ee-a297-92fbcf53809c.png

通過(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)鍵位置:

98c4a394-e9a9-11ee-a297-92fbcf53809c.png

這里的關(guān)鍵函數(shù)是load_properties_from_file,查找跟進(jìn)。

98cdf872-e9a9-11ee-a297-92fbcf53809c.png

這里繼續(xù)跟進(jìn)load_properties,很明顯了,他會(huì)讀取,然后通過(guò)property_set方法,按鍵值對(duì)寫入。

98d18c4e-e9a9-11ee-a297-92fbcf53809c.png

我們可以在這里加個(gè)判斷,匹配自己要修改的特征,然后自己去set。

98d51774-e9a9-11ee-a297-92fbcf53809c.png

再編譯刷機(jī),此時(shí)通過(guò)getprop命令獲取到的已經(jīng)是替換后的屬性值了,但是文件中的是不修改的。

98e9e53c-e9a9-11ee-a297-92fbcf53809c.png

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即可。

98f3112a-e9a9-11ee-a297-92fbcf53809c.png

再測(cè)試adb直接返回了root用戶權(quán)限,且ro.debuggable仍然為0。

總結(jié)

主要學(xué)習(xí)到的還是通過(guò)修改啟動(dòng)流程中的載入prop過(guò)程,達(dá)到抹去特征,可以將之前修改的特征通通使用這個(gè)方法進(jìn)行抹除,更加簡(jiǎn)單。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16361

    瀏覽量

    178030
  • AOSP
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    6196
  • adb
    adb
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    10424

原文標(biāo)題:AOSP源碼定制-對(duì)root定制的補(bǔ)充

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    iTOP-3588開(kāi)發(fā)板Android12源碼定制開(kāi)發(fā)uboot開(kāi)發(fā)

    iTOP-3588開(kāi)發(fā)板Android12源碼定制開(kāi)發(fā)uboot開(kāi)發(fā)
    的頭像 發(fā)表于 06-06 11:46 ?1531次閱讀
    iTOP-3588開(kāi)發(fā)板Android12<b class='flag-5'>源碼</b><b class='flag-5'>定制</b>開(kāi)發(fā)uboot開(kāi)發(fā)

    迅為RK3568開(kāi)發(fā)板定制擴(kuò)展分區(qū)SDK源碼編譯-獲取Linux-定制擴(kuò)展分區(qū)源碼

    獲取 Linux-定制擴(kuò)展分區(qū)源碼包 編譯環(huán)境說(shuō)明: 現(xiàn)在的 SDK 源碼在編譯的時(shí)候會(huì)自動(dòng)配置編譯環(huán)境,所以對(duì)環(huán)境要求不再那么嚴(yán)格,經(jīng)過(guò)測(cè)試,本源碼可以在 ubuntu20、ubun
    發(fā)表于 11-25 10:24

    MCU的開(kāi)發(fā)定制流程

    上海靈動(dòng)微電子MCU開(kāi)發(fā)定制流程
    發(fā)表于 01-05 07:18

    模組MAC地址定制流程是怎樣的?

    模組MAC地址定制流程是怎樣的?
    發(fā)表于 12-29 06:01

    定制和半定制簡(jiǎn)易IC設(shè)計(jì)流程介紹

    一般的IC設(shè)計(jì)流程可以分為兩大類:全定制和半定制,這里我換一種方式來(lái)說(shuō)明。 1.1 從RTL到GDSⅡ的設(shè)計(jì)流程: 這個(gè)可以理解成半定制的設(shè)
    發(fā)表于 10-20 11:38 ?25次下載
    全<b class='flag-5'>定制</b>和半<b class='flag-5'>定制</b>簡(jiǎn)易IC設(shè)計(jì)<b class='flag-5'>流程</b>介紹

    Vivado設(shè)計(jì)之Tcl定制化的實(shí)現(xiàn)流程

    其實(shí)Tcl在Vivado中還有很多延展應(yīng)用,接下來(lái)我們就來(lái)討論如何利用Tcl語(yǔ)言的靈活性和可擴(kuò)展性,在Vivado中實(shí)現(xiàn)定制化的FPGA設(shè)計(jì)流程。 基本的FPGA設(shè)計(jì)實(shí)現(xiàn)流程 FPGA的設(shè)計(jì)
    發(fā)表于 11-18 01:48 ?3607次閱讀
    Vivado設(shè)計(jì)之Tcl<b class='flag-5'>定制</b>化的實(shí)現(xiàn)<b class='flag-5'>流程</b>

    IC設(shè)計(jì)流程之全定制和半定制

    一個(gè)完整的半定制設(shè)計(jì)流程應(yīng)該是:RTL代碼輸入、功能仿真、邏輯綜合、形式驗(yàn)證、時(shí)序/功耗/噪聲分析,布局布線(物理綜合)、版圖驗(yàn)證。
    發(fā)表于 11-24 09:17 ?1.2w次閱讀

    fireflyAIO-3288J主板定制Android固件簡(jiǎn)介

    定制 Android 固件 前言 定制 Android 固件,有兩種方法: 改源碼,然后編譯生成固件。
    的頭像 發(fā)表于 12-26 14:35 ?1653次閱讀

    工藝流程詳解:用光固化3D打印機(jī)定制專屬珠寶

    3D打印機(jī)強(qiáng)大而實(shí)惠的定制能力,使得類似的專屬定制的大眾化普及成為現(xiàn)實(shí),本文小編將詳細(xì)介紹使用光固化3D打印機(jī)定制珠寶的整個(gè)流程。
    的頭像 發(fā)表于 12-26 12:44 ?946次閱讀

    鋰離子電池定制的價(jià)格多少?定制鋰電池的二種流程

    如何?鋰電池價(jià)格這類才是消費(fèi)者需要關(guān)注的問(wèn)題。 一、定制鋰電池特點(diǎn) 1、室內(nèi)溫度下充滿電儲(chǔ)存1個(gè)月的自放電率小于4%; 2、有著全自動(dòng)化技術(shù)生產(chǎn)工藝流程和生產(chǎn)加工設(shè)備,制造電芯一致性好; 3、性價(jià)比非常高,同一類產(chǎn)品具有競(jìng)爭(zhēng)力
    發(fā)表于 12-17 11:03 ?943次閱讀
    鋰離子電池<b class='flag-5'>定制</b>的價(jià)格多少?<b class='flag-5'>定制</b>鋰電池的二種<b class='flag-5'>流程</b>

    AOSP Android11系統(tǒng)源碼和內(nèi)核源碼簡(jiǎn)析

    AOSP源碼中并不包括內(nèi)核源碼,需要單獨(dú)下載,內(nèi)核源碼有很多版本,比如common是通用的Linux內(nèi)核,msm是用于使用高通MSM芯片的Android設(shè)備,goldfish是用于An
    的頭像 發(fā)表于 01-29 09:25 ?5434次閱讀

    用TCL定制Vivado設(shè)計(jì)實(shí)現(xiàn)流程

    今天推出Xilinx已發(fā)布的《Vivado使用誤區(qū)與進(jìn)階》系列:用TCL定制Vivado設(shè)計(jì)實(shí)現(xiàn)流程。
    的頭像 發(fā)表于 05-05 09:44 ?1080次閱讀
    用TCL<b class='flag-5'>定制</b>Vivado設(shè)計(jì)實(shí)現(xiàn)<b class='flag-5'>流程</b>

    APP定制開(kāi)發(fā)流程和特點(diǎn)

    如今APP已經(jīng)成為了人們生活中不可缺少的重要組成部分,APP定制開(kāi)發(fā)變得更加熱門,那么你知道APP定制開(kāi)發(fā)的流程有哪些嗎?下面由沐渥科技小編給大家詳細(xì)介紹一下。第一步需求分析,首先和客戶溝通,對(duì)需要
    的頭像 發(fā)表于 08-17 15:11 ?1254次閱讀
    APP<b class='flag-5'>定制</b>開(kāi)發(fā)<b class='flag-5'>流程</b>和特點(diǎn)

    基于Android13的AOSP源碼下載及編譯指南

    AOSP(Android Open Source Project)是Android操作系統(tǒng)的開(kāi)源項(xiàng)目,通過(guò)下載和編譯AOSP源碼,您可以獲得原始的Android系統(tǒng),并進(jìn)行定制和開(kāi)發(fā)。
    的頭像 發(fā)表于 01-17 09:49 ?3953次閱讀
    基于Android13的<b class='flag-5'>AOSP</b><b class='flag-5'>源碼</b>下載及編譯指南

    AOSP源碼定制-內(nèi)核驅(qū)動(dòng)編寫

    有時(shí)候?yàn)榱朔治鲆恍さ臋z測(cè),需要在內(nèi)核層面對(duì)讀寫相關(guān)的操作進(jìn)行監(jiān)控,每次去修改對(duì)應(yīng)的內(nèi)核源碼編譯重刷過(guò)于耗時(shí)耗力,這里就來(lái)嘗試編寫一個(gè)內(nèi)核驅(qū)動(dòng),載入后監(jiān)控讀寫。
    的頭像 發(fā)表于 04-23 11:15 ?1224次閱讀
    <b class='flag-5'>AOSP</b><b class='flag-5'>源碼</b><b class='flag-5'>定制</b>-內(nèi)核驅(qū)動(dòng)編寫