自动搜索与彻底清除私密信息--(二)root

android 的安全机制,五道防线:
一.代码混淆:混淆关键代码,替换命名,压缩代码,优化编译厚的java字节码
二.权限控制
1.Mainfest文件的权限检测:检测对应permission,若为空,则不受与权限;
2.检测用户uid,若uid为0的话则是root用户,如果为system server 的uid,则不做权限控制;如果uid与请求参数中的uid不同,则perssion denied
3.判断该uid是否具有相应的权限:去XML 权限列表和系统及的platform.xml中查找
三.签名与证书
一个app拥有一个签名,只有用有相同数字签名的app,才能互相访问对方的数据
四.Linux内核层安全机制
uid.访问权限控制
android继承了linux的安全特性,例如文件访问,有user,group,other与r,w,x组成。另外,只有root与system用户可以访问系统文件。
五.android虚拟机沙箱机制
app运行在虚拟机中,可以让应用之间相互隔离,每个app有单独的uid,运行在单独的虚拟机中。

由安全机制可知,我们的app如果要想访问其他应用的数据,必须要有相应的权限,root用户可以做到。但是不是所有人都会选择将手机root掉,手机root掉之后,手机内核就完全暴露,少了一层linux内核的天然屏障。下面有几种思路:
1.通过shareuid使我们的app和要访问的应用有相同的uid
2.通过sharuid=”android.uid.system”使应用具有系统权限,可以超过普通用户的权限
3.为不愿意root的用户提供root后才能使用的功能,无需安装su
然后看一下可行性:
1.手机里所有的app的uid我们都要shareuid,只有预装一个软件我们进行反编译一次,得到其uid,然后在我们自己的Mainfest文件里加入其uid。耗时太大,而且应用普遍都会有安全机制,防止我们反编译,不可行
2.系统权限可以做到超越普通用户的权限,但根据android的沙箱机制,不同uid的应用之间不能访问对方的数据。只能访问system app的数据,而我们自己预装的软件的数据则不能访问
3.目前还没有查阅到相关资料,如何在不root手机的前提下使app具有root权限

现在只好考虑将手机root。
root后的担忧主要是手机少了一层防护,容易被入侵者破坏。但我们有su与superuser相配合,如果应用需要申请root权限,在得到用户的允许下方可进行授权,并且会有时间限制。再不使用root功能时手机关闭root。当我们在root的过程中,还会给系统装一个程序,用来作为运行提示,由用户来决定,是否给予最高权限。这个程序的名字叫做Superuser.apk。当某些程序执行su指令想取得系统最高权限的时候,Superuser就会自动启动,拦截该动作并作出询问,当用户认为该程序可以安全使用的时候,那么我们就选择允许,否则,可以禁止该程序继续取得最高权限。
Root的过程其实就是把su文件放到/system/bin/ Superuser.apk 放到system/app下面,还需要设置/system/bin/su可以让任意用户可运行,有set uid和set gid的权限。即要在android机器上运行命令:adb shell chmod 4755 /system/bin/su。但厂商一般不会允许我们这样做。有的系统软件在启动的时候就将4755 改为普通权限。

su与superuser的配合工作:
1.Su 被用户调用
2.Su 创建了一个socket监听
3.Su 向Superuser发送了一个广播,说是有一个程序要请求root
4.Su 等待socket 数据接收。有超时处理。
5.Superuser 界面收到广播后,弹出一个对话框,询问用户
6.Superuser 向传来的数据中的socket写回用户应答结果。
7.Su 根据socket得到的结果处理应该不应该继续执行
8.完成提权管理

待做:
1.具体root过程,su与superuser如何工作还要研究源码。
2.将手机root,不依靠市面上的一键root与刷机精灵等工具

你可能感兴趣的:(自动搜索与彻底清除私密信息--(二)root)