导语:在前面的几篇文章中我们讲了Android的基本架构,渗透测试工具和ADB,本篇文章将继续为大家解读安卓应用程序渗透测试。

1.png

Android组件

四种组件类型中的三种:活动,服务和广播receiver。由一个称为Intent的异步消息激活(Intent是一种系统级别的消息传递机制)。

激活组件

Intents在运行时将各个组件彼此绑定(你可以将它们视为从其他组件请求操作的信使),不管这个组件是属于你的应用还是属于其他应用。

广播接收器

广播接收器不显示用户界面,他们可以创建状态栏通知,在广播事件发生时警告用户。

另请阅读:安卓应用程序渗透测试一

系统事件

应用程序可以被注册用来接收系统事件产生的广播,系统事件包括BOOT COMPLETE,SMS RECEIVED,BATTERY LOW等。当应用程序注册为SMS RECEIVED事件时,它的receiver在每次收到新的SMS消息时都将被触发。

自定义广播

除了系统产生的事件之外,应用程序还可以生成自定义广播Intents,我们可以为其注册receiver。

不过,更常见的是,广播receiver只是其他组件的“网关”,它的目的是完成非常少量的工作。

例如,它可以基于该事件启动一个服务来执行一些工作。例如,应用程序可以为电量低消息注册receiver,并基于该信息改变其行为。

示例

广播接收器“MyBroadCastReceiver”在AndroidManifest.xml文件中注册。广播接收器通常以下面的格式注册。由于receiver是导出的,所以代码似乎不安全,如图所示:

2.png

3.png

另请阅读:安卓应用程序渗透测试二

服务

服务是在后台运行的组件,以执行长时间运行的操作或执行远程进程的工作。

服务不提供用户界面,任何组件(例如活动)都不能启动服务并让它运行或绑定到服务以与之交互。

例如,当用户在使用其他应用程序时,服务可能在后台播放音乐,或者它可能正在通过网络获取数据而不影响用户与活动的交互。

三种不同类型的服务

· scheduled -当一个API,比如Job Scheduler启动一个服务时,该服务就会定时启动。这个Job Scheduler是在Android 5.0中引入的(API level 21)。

· Started – 当应用程序组件(例如活动)调用start Service()时,将启动服务。

· Bound – 当应用程序组件通过调用bind Service()绑定到服务时,该服务就被绑定了。

清单中的服务,声明了应用程序manifest文件中的所有服务,就像活动和其他组件一样,如图:

<Manifest … >
…
<application … >
<service android: name=”.Example Service” />
…
</application>
</manifest>

4.png

 

Activity(活动)

简单来说,一个活动代表着具有用户界面的单个屏幕。例如,一个登陆活动和一个登陆成功后的活动。

活动的作用是用户与应用程序交互的入口点,也是用户在应用程序内或不同应用程序之间导航的关键。

另请阅读:安卓应用程序渗透测试三

Activity类提供了许多回调函数,这样可以让活动知道某个状态的变化:例如系统正在创建,停止或恢复活动,或者破坏活动所在的进程。

Content Provider(内容提供商)

Content Provider组件根据请求将数据从一个应用程序提供给其他应用程。

你可以将数据存储在文件系统,Sq-Lite数据库,Web上,或者任何其他可以持久存储的位置,应用程序可以访问到就行。

通过content provider,其他应用程序可以查询甚至修改数据(如果内容提供商允许的话)。

当一个APP想要与其他APP共享数据时,Content Provider必不可少。

6.jpg

另请阅读:安卓应用程序渗透测试四

源链接

Hacking more

...