Android应用分类和安全Domain
来源:互联网 发布:温州网络学堂登录 编辑:程序博客网 时间:2024/06/13 00:42
Android系统应用
System APP vs. (Non-system) Ordinary APP
在Android系统中,应用可以分为系统应用(安装在/system/app分区上的)和非系统应用(安装在/data/app分区上的)。由于没有root权限的话/system分区是只读的,因此普通用户无法卸载系统应用。
注意系统应用和是否用ROM platform key签名没有关系,一个用platform key签名的应用也可以安装在普通/data/app分区上。用platform key签名的APP可以访问某些signatureOrSystem权限的操作。比如,静默安装和卸载其他非系统应用(background installation or uninstallation)的权限。
系统应用拥有某些system-only的权限,这些权限普通应用是无法访问的。注意,这里所说的权限和root/sudo/su权限是不同的。比如,Android 2.3之前允许普通应用重置系统中错过的电话计数(missed call),而这一权限从Android 2.3开始,是一个只有system-only的权限。如果一个重置上面的计数的应用被放置在/system分区,那么该应用不需要root权限就能使用重置功能。类似的系统权限还比如禁止(Disable)设置gps mock location.
系统应用可以像普通应用一样升级,但是升级后的APP不会放到原有的ROM中,相比普通应用,系统应用有一个特殊能力就是能重置到ROM第一次安装时的版本。
系统应用不能像普通应用一样移动到外部的SD卡上,如果卸载了系统应用的升级版本,那么升级版本占用的内部空间会释放。
Privileged系统应用
从Android 4.4 KK起(之前系统分区中的APP都有signatureOrSystem permission),为了进一步控制好系统权限,对系统应用进一步区分成了Privileged和Non-Privileged. 只有Privileged系统应用才具有系统权限 (“system”-level permission),而Privileged系统应用就是那些APK文件被放在/system/priv-app中的系统应用。比如WRITE_SECURE_SETTINGS的权限,在/system/app中的系统应用是无法访问的,只有Privileged系统应用才可以(APK在/system/priv-app中),这里的系统应用无需platform证书,就有signatureOrSystem权限。
Android系统中判断一个应用是否是系统应用还是用ApplicationInfo.FLAG_SYSTEM (表明应用在/system分区上),KK后新增了一个隐藏标志FLAG_PRIVILEGED来表示Priveleged系统应用。
Android APP的SE Context domain类别
应用的domain可以分成以下几个类别,具体的定义可以参考AOSP代码external/sepolicy/*_app.te.
platform_app
“Apps signed with platform key.” 用platform key签名的APP。比如,用于安装包的PackageInstaller.
system_app
“Apps that run with the system UID”, 比如com.android.settings. 注意system app的权限和system server不同。
untrusted_app
“Apps are labeled based on mac_permissions.xml and seapp_contexts”.
在目前的AOSP(M)中,所有non-system apps而且没有用platform key签名的system app的domain均为untrusted_app.
isolated_app
“APP with UID between AID_ISOLATED_START (99000) and AID_ISOLATED_END (99999)”. chrome sandbox isolated process.
系统应用,platform签名,安全域
查看APP运行时的Domain
如何查看一个APP的Domain
- 启动APP,用ADB shell ps命令找到该APP对应的进程PID
- ps -Z PID
如何查看系统中某个Domain的进程
例如查看属于’platform_app’ domain的进程可以用如下命令: ps -Z | grep 'platform_app'
Reference
[1]http://android.stackexchange.com/questions/17871/what-are-the-differences-between-a-system-app-and-user-app
[2]http://stackoverflow.com/questions/19868138/aosp-privileged-vs-system-app
[3]https://groups.google.com/forum/#!topic/android-platform/Vsa4IsJcOPE
[4]https://www.ricston.com/blog/explaining-behavior-android-application-system-apps-nonsystem-apps/
[5]http://stackoverflow.com/questions/28914215/is-it-possible-to-use-the-package-name-as-the-domain-name-in-android-selinux
- Android应用分类和安全Domain
- Android应用分类和安全Domain
- Android应用资源的分类和存储
- Android应用分类
- android 安全退出应用
- Android应用安全防御
- Android应用安全防御
- android安全退出应用
- Android应用安全防御
- Android 应用安全
- Android应用安全机制
- Android应用安全解决方案
- Android学习 - android应用安全
- Android应用内存泄漏分类
- android应用安全——数据安全
- android应用安全——数据安全
- Android应用安全开发之源码安全
- Android应用安全开发之源码安全
- Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- CSS
- Oracle-BPM(五)
- Android Https相关完全解析 当OkHttp遇到Https
- 【IIS服务器】 一点点对WEBRESOURCE.AXD的配置及使用
- Android应用分类和安全Domain
- YJAutoLayout
- 导入Excel表格数据
- 面向对象的基础和设计模式
- 汇编语言学习第八章-数据处理的两个基本问题
- tableViewCell 多选,索引,汉字排序,左滑操作
- Linux编程之线程基本编程
- 关于IDEA的省电模式
- Android中的Intent和Intent-Filter详解(二)