1.四大组件描述
Android主要包含4大组件,分别是activity组件、service组件、content provider组件和broadcast receiver组件。
- Activity组件
(1)一个Activity通常就是一个单独的屏幕(窗口)。
(2)Activity之间通过Intent进行通信。
(3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。
- Service组件
(1)service用于在后台完成用户指定的操作。
(2)开发人员需要在应用程序AndroidManifest.xml配置文件中声明全部的service,使用标签。
(3)Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。
- Content Provider组件
(1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
(2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
(3)ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
- broadcast receiver
(1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
(2)广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。
(3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。
- 四大组件总结
(1)4大组件的注册
4大基本组件都需要注册才能使用,每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置。AndroidManifest文件中未进行声明的activity、服务以及内容提供者将不为系统所见,从而也就不可用。而broadcast receiver广播接收者的注册分静态注册(在AndroidManifest文件中进行配置)和通过代码动态创建并以调用Context.registerReceiver()的方式注册至系统。需要注意的是在AndroidManifest文件中进行配置的广播接收者会随系统的启动而一直处于活跃状态,只要接收到感兴趣的广播就会触发(即使程序未运行)。
(2)4大组件的激活
内容提供者的激活:当接收到ContentResolver发出的请求后,内容提供者被激活。而其它三种组件activity、服务和广播接收器被一种叫做intent的异步消息所激活。
2 组件安全检查方法
1、 AndroidManifest.xml文件中activity组件里面有设置android:exported为true,表示此组件可以被外部应用调用。
2、 AndroidManifest.xml文件中activity组件里面有设置android:exported为false,表示此组件不可以被外部应用调用。只有同一个应用的组件或者有着同样user ID的应用可以
3、 AndroidManifest.xml文件中activity组件里面没有设置android:exported属性,但是有intent-filter,则exported默认属性为true,true表示此组件可以被外部应用调用。
4、 AndroidManifest.xml文件中activity组件里面没有设置android:exported属性,也没有设置intent-filter,则exported默认属性为false,false表示此组件不可以被外部应用调用。只有同一个应用的组件或者有着同样user ID的应用可以
androidManifest.xml的一些属性:
采用drozer工具可以进行检测组件是否存在导出风险
1 环境要求
(1)jdk1.6+
(2)python2.7
(3)android sdk
确保配置了adb、java环境变量
1.2 Window10安装drozer
2、 下载drozer
首先下载drozer的安装包
可以直接到官网下载:https://labs.mwrinfosecurity.com/tools/drozer/
百度云下载链接:http://pan.baidu.com/s/1gfI0hLT 密码:c78h
3.手机/模拟器上安装agent.apk
将agent.apk下载后,手机通过cmd安装,如下:
adb install 安装路径/agent.apk
使用drozer 【http://www.360doc.com/content/1