Android主要有一下几个角度来提供保障性
1,Linux层各种安全机制,DAC、SELinux
2,所有的应用程序都强制运行在自己的sandbox
3,严格的进程间通信安全控制
4,应用程序签名
5,Permission机制
设备root 程序加固 程序注入
1,DAC(Discretionary Access Control)任意的、自主的,
客体的属主可以自主的决定是否将全部的或部分的访问权限授予其他主体,主体通常是指进程\线程、而客户则是文件、文件夹、TCP\IP、内存段、IO设备等各种资源
简单来说就是资源所有者可以决定是否把权限给其他主体
Linux中的UGO(User、Group、Others)就是一种表现形式,权限分为读、写、执行三种
2,MAC 是相对于DAC而言的。主体访问客体的权利取决于操作系统集体控制规则,而不是由主体自行决定的
3,基于MAC的SELinux
SELinux是一个负责安全管理的Linux内核模块,他提供了完善的机制来支持访问控制
这两种模式DAC SELinux都存在于Android之中,检测权限会先经过DAC在检测SELinux
Android系统安全保护
1,Permission机制
2,DAC(UGO)保护
3,SEAndroid
Apk加固
1,防止二次打包(启动程序,获取当前签名,获取正确签名,判断二者是否相等)
2,防止反编译(混淆+给dex做加壳处理)
3,防止篡改(篡改需要反编译,第二次打包,通过前面两点就能做到防止篡改)
4,防止调试(android:debugable="true",来控制)
5,防止模拟器运行(模拟器IMEI号不是真实的硬件设备号,dev目录下有某些特殊的文件,build信息和真机存储差异)
5,防止盗窃
6,防止注入
文章来源: Android安全