声明
- 最近工作上涉及到对Android系统安全性的改造,在改造之前先分析整理下目前Android系统自身的安全性;
- 参考了一些文章及书籍,在这里大部分是对别人描述的提炼,我挑出一些对我有用的内容整理;
1 Dalvik/ART层上的权限(应用权限)
1.1 对Dalvik/ART上Java代码的监视和对原生Native层上C/C++代码的监视
因为Android的Java代码需要运行在Dalvik/ART虚拟机上,使得Dalvik/ART虚拟机能够在监视操作和强制安全检查方面有很大操作空间。而对于原生Native代码,虽然也能靠监视系统调用的方式来获知程序对资源的访问情况,但监视系统调用的问题是: 它们所能提供的监视粒度不够精确。比如:
- 文件访问,也就只有“open/read/write/close”这几个操作;
- 完成一次DNS查询,由于需要调用多个系统调用,监视起来就很费力;
此时,虚拟机的优势就显现出来了,因为大多数的操作都是由预先提供的包或类来实现的,而这些包或类中己经自带了权限检查功能。
1.2 绕过Dalvik/ART上Java代码的监视?
Android系统做得很绝,作为恶意编程者来说即便你有虚拟机层面的监事