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

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

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

Android10系統(tǒng)內(nèi)置fridaserver可執(zhí)行程序到手機(jī)系統(tǒng)

哆啦安全 ? 來源:卓碼星球 ? 2023-07-25 09:04 ? 次閱讀

1.環(huán)境準(zhǔn)備

源碼開發(fā)環(huán)境:

Windows 10+Vmware player 15+ubuntu-20.04

安卓系統(tǒng)版本:

基于LineageOS 17.1版本(Android 10)

測試手機(jī)型號:

oneplus 3

2.開啟adb root權(quán)限

2.1 adbd中涉及adb root權(quán)限開啟判斷

adbd中涉及adb root權(quán)限開啟判斷源文件文件路徑:

systemcoreadbdaemonmain.cpp

該文件中涉及權(quán)限判斷的方法代碼如下:

staticboolshould_drop_privileges(){
...
boolro_secure=android::GetBoolProperty("ro.secure",true);
boolro_debuggable=__android_log_is_debuggable();

//Dropprivilegesifro.secureisset...
booldrop=ro_secure;

//...except"adbroot"letsyoukeepprivilegesinadebuggablebuild.
std::stringprop=android::GetProperty("service.adb.root","");
booladb_root=(prop=="1");
booladb_unroot=(prop=="0");
if(ro_debuggable&&adb_root){
drop=false;
}
//...and"adbunroot"letsyouexplicitlydropprivileges.
if(adb_unroot){
drop=true;
}

returndrop;
}

2.2 主要涉及修改地方

源碼編譯過程中我們選擇編譯userdebug版本編譯,userdebug版本系統(tǒng)的selinux權(quán)限放的寬一些,方便我們進(jìn)行配置修改。修改主要涉及修改的關(guān)鍵屬性如下:

#adbd中會根據(jù)ro.secure=0來判斷adbd是否需要root用戶權(quán)限
ro.secure=0
#設(shè)置ro.adb.secure=0表示默認(rèn)adb授權(quán)打開,不用彈出煩擾usb授權(quán)對話框了
ro.adb.secure=0

可以通過兩種方式來配置adb root用戶權(quán)限,分別是修改編譯過程中main.mk文件的屬性設(shè)置。另一種是直接修改adbd中的源碼,將相關(guān)屬性獲取的地方直接返回需要修改的值。

2.2.1 main.mk中修改屬性方式

修改文件路徑:

buildmakecoremain.mk

以下是該文件中配置之后的部分內(nèi)容:

user_variant:=$(filteruseruserdebug,$(TARGET_BUILD_VARIANT))
enable_target_debugging:=true
tags_to_install:=
ifneq(,$(user_variant))
#Targetissecureinuserbuilds.
#///ADDSTART
#ADDITIONAL_DEFAULT_PROPERTIES+=ro.secure=1
ADDITIONAL_DEFAULT_PROPERTIES+=ro.secure=0
#///ADDEND
ADDITIONAL_DEFAULT_PROPERTIES+=security.perf_harden=1

ifeq($(user_variant),user)
ADDITIONAL_DEFAULT_PROPERTIES+=ro.adb.secure=1

endif

ifeq($(user_variant),userdebug)
#Pickupsomeextrausefultools
tags_to_install+=debug
#///ADDSTART
ADDITIONAL_DEFAULT_PROPERTIES+=ro.adb.secure=0
#///ADDEND
else
#Disabledebugginginplainuserbuilds.
#///ADDSTART
#enable_target_debugging:=true
#///ADDEND
enable_target_debugging:=
endif
...

這種方式存在的問題:

App通過獲取屬性ro.secure/ro.adb.secure容易檢測手機(jī)處于不安全狀態(tài),越獄風(fēng)險(xiǎn)。

2.2.2 adbd源碼中修改屬性方式

修改文件路徑路徑位置:

systemcoreadbdaemonmain.cpp

修改的關(guān)鍵代碼如下:

//修改ro.adb.secure關(guān)閉usb授權(quán)對話框適合編譯userdebug版本
intadbd_main(intserver_port){
...
#ifdefined(__ANDROID__)
//Ifwe'reonuserdebug/engorthedeviceisunlocked,permitno-authentication.
booldevice_unlocked="orange"==android::GetProperty("ro.boot.verifiedbootstate","");
if(__android_log_is_debuggable()||device_unlocked){
auth_required=android::GetBoolProperty("ro.adb.secure",false);
///ADDSTART
if(CONFIG_ADBD_ROOT>=0)
{
auth_required=false;
}
///ADDEND
#ifdefined(__ANDROID_RECOVERY__)
auth_required=auth_required&&
android::GetBoolProperty("ro.adb.secure.recovery",true);
#endif
}
#endif
...
}

//直接返回不降權(quán)處理
staticboolshould_drop_privileges(){

///ADDSTART適合編譯userdebug版本
if(CONFIG_ADBD_ROOT>=0)
{
returnfalse;
}
///ADDEND
...
}

這種方式修改可以防止App檢測屬性ro.secure ro.adb.secure,不做任何修改情況下userdebug編譯出來的這兩個(gè)屬性都為1

2.2.3 采用的修改方案

采用修改adbd源碼的方式進(jìn)行測試驗(yàn)證

3.內(nèi)置fridaserver到手機(jī)系統(tǒng)

3.1下載fridaserver

由于測試的機(jī)型為arm 64位的,所以下載Android 64位版本。

3.2 創(chuàng)建fridaserver模塊

(1).在源碼根目錄創(chuàng)建路徑 frameworksasecmds創(chuàng)建mycmds目錄

(2).將 fridaserver改成想要的名稱拷貝到mycmds目錄下,比如改成myfridaserverarm64

(3).編寫 fridaserver模塊編譯配置Android.mk文件

以下參考配置:

#///ADDSTART
#///ADDEND
LOCAL_PATH:=$(callmy-dir)
include$(CLEAR_VARS)
LOCAL_MODULE:=myfridaserverarm64
LOCAL_MODULE_CLASS:=EXECUTABLES
LOCAL_SRC_FILES:=myfridaserverarm64
include$(BUILD_PREBUILT)

(4).將新增的myfridaserverarm64模塊加入系統(tǒng)編譯模塊鏈

模塊加入源碼編譯鏈可以在以下文件路徑中添加:

buildmake	argetproductase_system.mk

在該文件中添加myfridaserverarm64模塊到模塊編譯鏈中的內(nèi)容參考如下:

#Basemodulesandsettingsforthesystempartition.
PRODUCT_PACKAGES+=
myfridaserverarm64
abb
adbd
...

4.編譯源碼

執(zhí)行如下命令編譯:

qiang@ubuntu:~/lineageOs$sourcebuild/envsetup.sh
qiang@ubuntu:~/lineageOs$breakfastoneplus3
qiang@ubuntu:~/lineageOs$brunchoneplus3

5.刷機(jī)

使用twrp進(jìn)行刷機(jī)。

C:UsersQiang>adbpushC:UsersQiangDesktoplineage-17.1-20210322-UNOFFICIAL-oneplus3.zip/sdcard/update.zip
C:UsersQiangDesktoplineage-17.1-20210322-UNOFFICIAL-on...pushed,0skipped.30.2MB/s(783272894bytesin24.715s)

C:UsersQiang>adbrebootrecovery

C:UsersQiang>

進(jìn)入recovery以后選擇刷機(jī)包完成刷機(jī)操作。

此處使用到的幾個(gè)命令說明:

1.adbpush
表示將電腦端文件傳輸?shù)绞謾C(jī)端
比如:adbpushc:\test.txt/data/local/tmp/test.txt

2.adbrebootrecovery
手機(jī)進(jìn)入recovery模式

6.驗(yàn)證

adb權(quán)限驗(yàn)證:

C:UsersQiang>adbshellps-Z|findstr"adbd"
usu:s0root277111846446212poll_schedule_timeout7482d393c8Sadbd

C:UsersQiang>

以上命令執(zhí)行之后可以看到adbd運(yùn)行的時(shí)候運(yùn)行的安全域"usu:s0",運(yùn)行的用戶為root用戶。所以在selinux打開的情況下,adbd運(yùn)行同時(shí)滿足運(yùn)行安全域"usu:s0"以及運(yùn)行用戶"root"的條件,就具備了超級root權(quán)限。

啟動內(nèi)置myfridaserverarm64驗(yàn)證:

C:UsersQiang>adbshell
OnePlus3:/#myfridaserverarm64-D


C:UsersQiang>adbshellps|findstr"myfrida"
root6298112401643772poll_schedule_timeout7316a903c8Smyfridaserverarm64

C:UsersQiang>





審核編輯:劉清

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

    關(guān)注

    4

    文章

    593

    瀏覽量

    27397
  • Android系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    56

    瀏覽量

    13500
  • ADB驅(qū)動
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    6264

原文標(biāo)題:Android10系統(tǒng)內(nèi)置fridaserver可執(zhí)行程序到手機(jī)系統(tǒng)

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

收藏 人收藏

    評論

    相關(guān)推薦

    用于分析可執(zhí)行程序和內(nèi)存轉(zhuǎn)儲的命令行工具介紹

    Axf Tool 是桃芯科技一個(gè)用于分析可執(zhí)行程序和內(nèi)存轉(zhuǎn)儲的命令行工具。該工具已集成到 ingWizard 的項(xiàng)目快捷菜單里。
    的頭像 發(fā)表于 11-03 17:00 ?1276次閱讀
    用于分析<b class='flag-5'>可執(zhí)行程序</b>和內(nèi)存轉(zhuǎn)儲的命令行工具介紹

    labview生成的可執(zhí)行程序的反編譯

    壇子里有沒有哪位大神知道關(guān)于labview生成的可執(zhí)行程序的反編譯問題,如何反編譯exe的應(yīng)用程序
    發(fā)表于 07-17 14:19

    各位大大,vxworks能否直接調(diào)用可執(zhí)行程序

    的腳本或方法,可以直接調(diào)用可執(zhí)行程序。ps:我看網(wǎng)上的一些資料說python可以運(yùn)行在vxworsk下,同時(shí)在linux下python可以直接調(diào)用可執(zhí)行程序,只是不知道這套方法在vxworks下是否
    發(fā)表于 04-29 12:13

    嵌入式系統(tǒng)中讓Python程序可執(zhí)行

    這部分內(nèi)容只對Linux/Unix用戶適用,不過Windows用戶可能也對程序的第一行比較好奇。首先我們需要通過chmod命令,給程序可執(zhí)行的許可,然后運(yùn)行程序。$ chmod a+
    發(fā)表于 02-27 17:04

    what!!! 10分鐘做出Labview可執(zhí)行程序?。?!

    可執(zhí)行程序!https://mp.weixin.qq.com/s?__biz=MzI3MDIzMDQwNQ==&mid=100000411&idx=2&sn
    發(fā)表于 04-16 22:04

    求大佬分享RK3399 Android10 ROOT方法

    求大佬分享RK3399 Android10 ROOT方法
    發(fā)表于 03-08 09:03

    16KEY-B的可執(zhí)行程序

    16KEY-B的可執(zhí)行程序 /*******************************************************************/ /* */ /* 單片機(jī)開發(fā)
    發(fā)表于 11-22 18:02 ?14次下載

    Setup軟件安裝可執(zhí)行程序工具免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Setup軟件安裝可執(zhí)行程序工具免費(fèi)下載。 etup.exe是電腦的可執(zhí)行進(jìn)程文件,在正常情況下setup.exe表示為系統(tǒng)的安裝文件setup.exe,遇到系統(tǒng)
    發(fā)表于 11-13 08:00 ?11次下載

    三星Galaxy S10海外部分用戶收到Android10更新

    早前三星公布了國行版機(jī)型更新Android10的升級計(jì)劃表,最快的Galaxy S10國行版要等到明年1月份才能獲得Android10系統(tǒng)更新。
    的頭像 發(fā)表于 12-03 15:42 ?2818次閱讀

    Redmi K20迎來基于Android10的MIUI更新

    要知道Redmi K20在發(fā)布的時(shí)候,它預(yù)裝的是基于Android9.0深度定制的MIUI,此番升級Android10對于該機(jī)的用戶來說是個(gè)好消息。
    的頭像 發(fā)表于 12-27 14:11 ?2943次閱讀

    諾基亞7.2可升級Android10系統(tǒng)

    在最新的Android10中,谷歌針對大屏設(shè)備進(jìn)行了體驗(yàn)上的優(yōu)化,同時(shí)改進(jìn)了ART機(jī)制,谷歌將部分預(yù)先配置好的文件放在云端,以提升應(yīng)用的加載速度和運(yùn)行效率,使Android應(yīng)用整體的流暢度以及穩(wěn)定性進(jìn)一步提升。
    的頭像 發(fā)表于 04-01 16:37 ?3923次閱讀
    諾基亞7.2可升級<b class='flag-5'>Android10</b><b class='flag-5'>系統(tǒng)</b>

    在標(biāo)準(zhǔn)C語言中編譯出來的可執(zhí)行程序

    在標(biāo)準(zhǔn)C語言中,編譯出來的可執(zhí)行程序分為代碼區(qū)(text)、數(shù)據(jù)區(qū)(data)和未初始化數(shù)據(jù)區(qū)(bss)3個(gè)部分。如下代碼
    的頭像 發(fā)表于 06-16 09:01 ?1895次閱讀
    在標(biāo)準(zhǔn)C語言中編譯出來的<b class='flag-5'>可執(zhí)行程序</b>

    如何嵌入第三方可執(zhí)行程序

    你可能碰到過這種需求:需要在自己開發(fā)的應(yīng)用程序中嵌入某個(gè)第三方的可執(zhí)行程序,那么該如何實(shí)現(xiàn)呢?其實(shí)是很簡單的,借助Windows API,簡單幾步即可完成。
    的頭像 發(fā)表于 11-01 09:54 ?4829次閱讀

    LabVIEW中執(zhí)行系統(tǒng)命令VI介紹

    LabVIEW自帶一個(gè)執(zhí)行系統(tǒng)命令VI(System Exec.vi),位于函數(shù)選板的“互連接口”>>“庫與可執(zhí)行程序”>>“執(zhí)行系統(tǒng)命令”
    的頭像 發(fā)表于 04-25 11:47 ?9364次閱讀
    LabVIEW中<b class='flag-5'>執(zhí)行</b><b class='flag-5'>系統(tǒng)</b>命令VI介紹

    labview生成可執(zhí)行程序后vi都在同一路徑下嗎

    在LabVIEW中,當(dāng)您生成可執(zhí)行程序(exe文件)后,VI(虛擬儀器)并不直接以文件的形式存在于可執(zhí)行文件的同一物理路徑下。實(shí)際上,LabVIEW的可執(zhí)行文件構(gòu)建過程涉及將多個(gè)VI和相關(guān)的資源
    的頭像 發(fā)表于 09-04 17:06 ?617次閱讀