【Android 逆向】Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )
文章目錄
- 一、adb 降權(quán)
- 1、ro.secure 屬性
- 2、ro.debuggable 屬性
- 3、service.adb.root 屬性
- 4、ro.kernel.qemu 屬性
一、adb 降權(quán)
遠(yuǎn)程 adb 命令 , 需要通過 adbd 服務(wù)程序處理 ;
adbd 文件的權(quán)限 , 屬于 root 權(quán)限 , shell 分組 ; 因此這里涉及到 adb 的降權(quán) ( Drop Privileges ) 問題 ,
-rwxr-xr-x 1 root shell 1758824 2009-01-01 16:00 adbd一些系統(tǒng)屬性可以影響 adb 是否降權(quán) ; adb 的權(quán)限初始為 root 權(quán)限 ;
1、ro.secure 屬性
ro.secure 屬性 , 配置 是否開啟安全防護(hù) ; 如果該屬性配置為 1 , 則 adb 的權(quán)限就會(huì)降權(quán) ;
調(diào)用 getprop ro.secure 命令 , 獲取該屬性的屬性值 ;
對應(yīng) /system/core/adb/adb_main.cpp 源碼位置 :
#if defined(ALLOW_ADBD_ROOT)// 影響'adb root'和'adb unroot'的屬性是ro.secure和// 可調(diào)試的。在此上下文中,名稱不會(huì)產(chǎn)生預(yù)期的行為 特別明顯。//// ro.debugable:// 允許成為根,但不一定是默認(rèn)值。在上設(shè)置為1// eng和userdebug構(gòu)建。//// ro.secure:// 默認(rèn)情況下刪除特權(quán)。在用戶調(diào)試和用戶生成時(shí)設(shè)置為1。property_get("ro.secure", value, "1");bool ro_secure = (strcmp(value, "1") == 0); #elsereturn true; // "adb root" not allowed, always drop privileges. #endif /* ALLOW_ADBD_ROOT */ } #endif /* ADB_HOST */Android 源碼地址 : /system/core/adb/adb_main.cpp
2、ro.debuggable 屬性
ro.debuggable 屬性 , 配置 是否可以調(diào)試 ;
調(diào)用 getprop ro.debuggable 獲取的屬性為 0 ;
對應(yīng) /system/core/adb/adb_main.cpp 源碼位置 :
#if defined(ALLOW_ADBD_ROOT)property_get("service.adb.root", value, "");bool adb_root = (strcmp(value, "1") == 0); // adb_root 值為 false ; bool adb_unroot = (strcmp(value, "0") == 0); // adb_unroot 值為 true // ...except "adb root" lets you keep privileges in a debuggable build.//adb_root 為 false , 該分支不會(huì)進(jìn)入 if (ro_debuggable && adb_root) {// 該分支永遠(yuǎn)不會(huì)進(jìn)來 // 但是只要進(jìn)來了 , 就意味著 adb 不降權(quán) , 持有 root 權(quán)限 drop = false;}// ...and "adb unroot" lets you explicitly drop privileges.if (adb_unroot) {drop = true;}return drop; #elsereturn true; // "adb root" not allowed, always drop privileges. #endif /* ALLOW_ADBD_ROOT */ } #endif /* ADB_HOST */Android 源碼地址 : /system/core/adb/adb_main.cpp
3、service.adb.root 屬性
service.adb.root 屬性 , 配置 adb 是否擁有 root 權(quán)限
調(diào)用 getprop service.adb.root 命令 , 獲取的值為空 ;
4、ro.kernel.qemu 屬性
ro.kernel.qemu 屬性 , 該屬性只有模擬器有 , 手機(jī)真機(jī)沒有改配置 ;
調(diào)用 getprop ro.kernel.qemu 獲取的屬性為空 ;
對應(yīng) /system/core/adb/adb_main.cpp 源碼位置 :
#if defined(ALLOW_ADBD_ROOT)// 模擬器永遠(yuǎn)都不安全,所以不要在那里放棄特權(quán)。// TODO:這看起來像一個(gè)bug——仿真器的行為不應(yīng)該像一個(gè)設(shè)備嗎?property_get("ro.kernel.qemu", value, "");if (strcmp(value, "1") == 0) {// 該分支永遠(yuǎn)不會(huì)命中 , 不會(huì)被執(zhí)行到return false;}#elsereturn true; // "adb root" not allowed, always drop privileges. #endif /* ALLOW_ADBD_ROOT */ } #endif /* ADB_HOST */Android 源碼地址 : /system/core/adb/adb_main.cpp
總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android