【Android 逆向】Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 【Android 逆向】Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )

文章目录

一、adb 降权

1、ro.secure 属性

2、ro.debuggable 属性

3、service.adb.root 属性

4、ro.kernel.qemu 属性





一、adb 降权


远程 adb 命令 , 需要通过 adbd 服务程序处理 ;


adbd 文件的权限 , 属于 root 权限 , shell 分组 ; 因此这里涉及到 adb 的降权 ( Drop Privileges ) 问题 ,


-rwxr-xr-x 1 root   shell    1758824 2009-01-01 16:00 adbd

image.png



一些系统属性可以影响 adb 是否降权 ; adb 的权限初始为 root 权限 ;



1、ro.secure 属性


ro.secure 属性 , 配置 是否开启安全防护 ; 如果该属性配置为 1 , 则 adb 的权限就会降权 ;


调用 getprop ro.secure 命令 , 获取该属性的属性值 ;

image.png



对应 /system/core/adb/adb_main.cpp 源码位置 :


#if defined(ALLOW_ADBD_ROOT)

// 影响'adb root'和'adb unroot'的属性是ro.secure和
  // 可调试的。在此上下文中,名称不会产生预期的行为 特别明显。
  //
  // ro.debugable:
  // 允许成为根,但不一定是默认值。在上设置为1
  // eng和userdebug构建。
  //
  // ro.secure:
  // 默认情况下删除特权。在用户调试和用户生成时设置为1。
    property_get("ro.secure", value, "1");
    bool ro_secure = (strcmp(value, "1") == 0);
#else
    return 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 属性 , 配置 是否可以调试 ;


调用 getprop ro.debuggable 获取的属性为 0 ;

image.png



对应 /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 , 该分支不会进入 
    if (ro_debuggable && adb_root) {
      // 该分支永远不会进来 
      // 但是只要进来了 , 就意味着 adb 不降权 , 持有 root 权限 
        drop = false;
    }
    // ...and "adb unroot" lets you explicitly drop privileges.
    if (adb_unroot) {
        drop = true;
    }
    return drop;
#else
    return 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 权限


调用 getprop service.adb.root 命令 , 获取的值为空 ;

image.png




4、ro.kernel.qemu 属性


ro.kernel.qemu 属性 , 该属性只有模拟器有 , 手机真机没有改配置 ;


调用 getprop ro.kernel.qemu 获取的属性为空 ;




对应 /system/core/adb/adb_main.cpp 源码位置 :


#if defined(ALLOW_ADBD_ROOT)

// 模拟器永远都不安全,所以不要在那里放弃特权。
  // TODO:这看起来像一个bug——仿真器的行为不应该像一个设备吗?
    property_get("ro.kernel.qemu", value, "");
    if (strcmp(value, "1") == 0) {
      // 该分支永远不会命中 , 不会被执行到
        return false;
    }
#else
    return true; // "adb root" not allowed, always drop privileges.
#endif /* ALLOW_ADBD_ROOT */
}
#endif /* ADB_HOST */


Android 源码地址 : /system/core/adb/adb_main.cpp


相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
6月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
271 64
|
15天前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
201 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
6月前
|
存储 Android开发 数据安全/隐私保护
如何在Android设备上撤销Flutter应用程序的所有权限?
如何在Android设备上撤销Flutter应用程序的所有权限?
355 64
|
5月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
370 0
|
存储 安全 Android开发
"解锁Android权限迷宫:一场惊心动魄的动态权限请求之旅,让你的应用从平凡跃升至用户心尖的宠儿!"
【8月更文挑战第13天】随着Android系统的更新,权限管理变得至关重要。尤其从Android 6.0起,引入了动态权限请求,增强了用户隐私保护并要求开发者实现更精细的权限控制。本文采用问答形式,深入探讨动态权限请求机制与最佳实践,并提供示例代码。首先解释了动态权限的概念及其重要性;接着详述实现步骤:定义、检查、请求权限及处理结果;最后总结了六大最佳实践,包括适时请求、解释原因、提供替代方案、妥善处理拒绝情况、适应权限变更及兼容旧版系统,帮助开发者打造安全易用的应用。
237 0
|
10月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
887 11
|
存储 API Android开发
"解锁Android权限迷宫:一场惊心动魄的动态权限请求之旅,让你的应用从平凡跃升至用户心尖的宠儿!"
随着Android系统的更新,权限管理成为应用开发的关键。尤其在Android 6.0(API 级别 23)后,动态权限请求机制的引入提升了用户隐私保护,要求开发者进行更精细的权限管理。
219 2
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
217 0

热门文章

最新文章