查看原文
其他

干货|Android系统中run-as和su命令的源码解析(升降权限)

云天实验室 哆啦安全 2022-05-24

run-as [packagename]


Android中的这些命令,在/system/bin和/system/xbin目录下,这些命令的源码路径为/system/core/



/system/core/run-as/run-as.c



/system/core/run-as/run-as.cpp


1.run-as命令运行有很多限制

第一个限制

运行的uid限制,运行命令的用户id只能是shell和root用户


第二限制

这个应用的安装必须合法

Android7.1.2及以下版本存在/system/core/run-as/package.c


包名、用户id(uid)、是否为debug模式,对应的数据目录,是否是release版,组id(gid)

#define PACKAGES_LIST_FILE "/data/system/packages.list"



packages.list文件是存储安装包的简略信息的,其实和packages.list同一目录下还有一个重要文件packages.xml



可以使用Android中的dumpsys packageinfo命令来查看指定应用的详细信息



Android8.0及以上版本无/system/core/run-as/package.c


第三个限制

应用的uid必须合法


AID_APP的定义

/system/core/include/private/android_filesystem_config.h

AID_ROOT对应的是root用户,uid=0

AID_SYSTEM对应的是system用户,uid=100

AID_SHELL对应的是shell用户,uid=2000


root用户的权限>>system用户的权限>>shell用户的权限>>第三方应用的权限




查看应用的uid为u0_a32最后的整数+10000

10000+32=10032




第四个限制

应用是否是debug模式



/data/system/packages.list文件读取权限是AID_SYSTEM



run-as有限制,这个命令只能是root和shell用户才可以访问的(shell用户也不比system用户权限低)

微信扫一扫付费阅读本文

可试读52%

微信扫一扫付费阅读本文

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存