导语:在安全行业中,通常采用安卓安全测试来检测安卓APP中的漏洞。Web应用测试之后,人们更加关心的领域便是移动应用测试。我们先从一些基础开始。
在安全行业中,通常采用安卓安全测试来检测安卓APP中的漏洞。
Web应用测试之后,人们更加关心的领域便是移动应用测试。我们先从一些基础开始。
安卓设备基础架构
Linux内核层
对于硬件,我们通常要求驱动程序作为软件,以便该硬件可以顺利运行。我们选择Linux内核,因为它具有安全功能。
· 基于用户的权限模型
· 进程隔离
· 用于安全IPC的可扩展机制
· 能够移除内核中不必要且可能不安全的部分
硬件抽象层
硬件抽象层让应用程序可以直接访问硬件资源,比如蓝牙,音频,视频等,如图:
在硬件抽象层之上有一层应用框架层,其中包含着很多非常重要且有用的库,如下:
· Surface Manager:管理窗口和屏幕
· Media Framework:允许使用各种类型的编码器来回放和记录不同的媒体资源
· SQLite:用于数据库管理的轻量版SQL
· WebKit:浏览器渲染引擎
· OpenGL:用于在屏幕上正确渲染2D和3D内容,安卓中的库是用C和C++写的
Dalvik虚拟机是由Android开源项目专门设计的,用于执行Android应用程序。每个运行在Android设备中的APP都有自己独立的Dalvik虚拟机。
Android运行时(ART)是Dalvik虚拟机的替代品,在Android4.4中已经作为试验版发布了,在Android Lollipop(5.0)中,它将完全取代Dalvik虚拟机。
ART中有一些重大变化,是因为AOT编译(ahead-of-time)和垃圾回收机制。
在AOT编译中,当用户在他们的设备中安装APP时就进行编译,而在Dalvik虚拟机中,使用的是JIT编译(Just-in-time),也就是当用户运行APP时进行字节码编译。
从Android4.4版本开始,还有一个名为ART(Android运行时)的运行时,用户可以在DVM和ART运行时环境之间自由切换。
应用框架层
应用框架层以Java类的形式为应用程序提供许多更高层的服务。应用程序开发者允许在APP中使用这些服务。
Android框架中包含了下列关键服务
· 活动管理器:活动管理器控制着应用程序生命周期和堆栈。
· 内容提供商:内容提供商组件根据请求从一个应用程序中为其他程序提供数据。您可以将数据存储在文件系统,SQLite数据库或web上,或者应用程序可以访问的任何其他持久存储的位置。通过内容提供商,其他应用程序可以查询和修改数据(如果内容提供商允许的话)。当APP想要与其他APP共享数据时,内容提供商发挥着至关重要的作用。
· 资源管理器:提供对非代码嵌入资源的访问,比如字符串,颜色设置和用户界面布局。
· 通知管理器:允许应用程序向用户显示警报和通知。
· 视图系统:用于创建应用程序用户界面的可扩展视图集。
· 包管理器:应用程序能够通过该系统查找设备上当前安装的其他应用程序的信息。
· 电话管理器:向应用程序提供设备上可用的电话服务信息,例如状态和拨号信息。
· 位置管理器:提供对位置服务的访问,允许应用程序接收有关位置变更的更新。
应用层
应用层位于Android软件架构的最顶层。这一层包括Android设备自带的系统应用(比如web浏览器和邮件APP等)以及在用户在购买设备后安装的第三方应用程序。典型应用包括相机,闹钟,时钟,计算器,联系人,日历,媒体播放器等。
敬请期待Android应用程序渗透测试二。