android权限代码分析

1:权限概念
2:文件权限与进程权限
2.1:linux 文件权限
2.2:进程权限
3:为了控制访问的安全,加入安全机制
3.1:系统级权限配置文档(1)
3.2:系统级权限配置文档(2)
3.3:apk 安装之后申请的权限存放位置
4:apk 四个权限配置
4.1 第一种情况,不配置,默认可以随意调用
4.2 第二种方式,增加权限访问normal
4.3 第三种方式,增加权限访问dangerous
4.4 第四种方式,增加权限访问signatures
4.5 第五种方式,增加权限访问signaturesOrSystem
5:实战之设置时间
5.1 配置elf 可执行文件方式实现设置时间代码

5.1.1:NDK 介绍

5.1.2 配置设置时间c 代码,以及编译脚本,生成elf 可执行文件测试
5.2 配置apk 方式实现设置时间代码
5.2.1 JNI 介绍
5.2.2 JNI 执行过程分析以及系统相关代码
5.2.3 apk 配置以及JNI 编写
6:su 与Superuser 配合管理root 权限申请
6.1 root 原理以及目标


1:权限概念
根据用户的使用过程体验,可以将Android 涉及的权限大致分为如下三类:
(1)Android 手机所有者权限:自用户购买Android 手机后,用户不需要输
入任何密码,就具有安装一般应用软件、使用应用程序等的权限;
(2)Android root 权限:该权限为Android 系统的最高权限,可以对所有
系统中文件、数据进行任意操作。出厂时默认没有该权限,需要使用z4Root 等
软件进行获取,然而,并不鼓励进行此操作,因为可能由此使用户失去手机原厂
保修的权益。同样,如果将Android 手机进行root 权限提升,则此后用户不
需要输入任何密码,都将能以Android root 权限来使用手机。
(3 ) Android 应用程序权限: Android 提供了丰富的SDK ( Software
development kit),开发人员可以根据其开发Android 中的应用程序。而应
用程序对Android 系统资源的访问需要有相应的访问权限,这个权限就称为
Android 应用程序权限,它在应用程序设计时设定,在Android 系统中初次
安装时即生效。值得注意的是:如果应用程序设计的权限大于Android 手机所
有者权限,则该应用程序无法运行。如:没有获取Android root 权限的手机
无法运行Root Explorer,因为运行该应用程序需要Android root 权限


2:文件权限与进程权限(详细请看培训文档里面网络资源\浅析Android 权
限机制(一) —— Android 的权限机制- 五分- 博客园.htm)
2.1:linux 文件权限
手机选择调试模式,连接电脑,进入cmd,输入adb shell 进入终端调试界面:(需要装
驱动以及配置adb 路径到环境变量)
输入ll 命令,部分显示如下:

android权限代码分析_第1张图片


drwxrwxr-x root system 2013-12-16 06:00 mnt
这里可以看到用户为root,所在组为system
drwxrwxr-x 可以看到mnt 为目录(d),rwxrwxr-x 前三位为root 用户权限rwx(读写
执行),中间三位为组system 对此目录的权限rwx(读写执行),后三位为other 的权限,
r-x(读执行)


2.2:进程权限
输入ps,查看下进程列表:

android权限代码分析_第2张图片


android权限代码分析_第3张图片

这里我们来看第一列(user 所属用户) 第二列(pid 进程id) 第三列(ppid 进程父类
id) 和最后一列(name 进程名字)
/init 是系统创建的第一个进程。进程id 为1
/system/bin/servicemanages 可以看到父类进程为1,由/init 创建。
Zygote 可以看到父类进程为1,由/init 创建。这个是应用端的父类进程。我们启动activity
如果没有对应进程, 需要Zygote 调用
android\dalvik\vm\native\dalvik_system_Zygote.cpp 里面的
Dalvik_dalvik_system_Zygote_forkAndSpecialize 函数。
Java 端代码为
android\libcore\dalvik\src\main\java\dalvik\system\Zygote.java 里面的
forkAndSpecialize 函数
System_server 用户为system , 是Zygote 创建的第一个进程。我们的
ActivityManagerService,
WindowManagerService 等系统级服务都在此进程里面,具体的可以使用
eng 版本,使用eclipse 选择DDMS,选中system_process,选择update
Threads 即可看到如下信息:




未完,待续。。


你可能感兴趣的:(android)