-
-
Android沙盒开发之基于广播方式的行为分析
-
发表于:
2013-7-23 21:31
6701
-
标 题: Android沙盒开发之基于广播方式的行为分析
作 者: 蟑螂一号
时 间: 2013-07-23,21:44:41
Android系统中的广播是广泛用于应用程序之间通信的一种手段,是android四大金刚之一。在android应用中,许多特殊功能需要广播的支持,比如应用开机自启动需要注册开机自启动广播,短信接收需要注册短信接收广播。关于android广播机制可以在网上搜索相关内容,网上有详尽的讲解。在这主要讲述如果利用广播方式来实现程序的行为分析。
在android中程序开机自启动是很多应用必不可少的功能。不管是正常应用,还是想搞点坏注意的应用。这些应用往往注册一个开机自启动广播,然后用户开机之后,程序就会随着开机而在后台运行做事情。以下是一段开机自启动的代码:
public class BootBroadcastReceiver extends BroadcastReceiver {
static final String action_boot="android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(action_boot)){
//to do sth
}
}
}
有以上代码可知,广播机制需要Intent的参与。关键的地方是Intent的getAction函数。所以,根据getAction返回的字符串可知程序的意图。
以下列举了几个意图:
1.android.provider.Telephony.SMS_RECEIVED
程序接收短信
2.android.intent.action.BOOT_COMPLETED
程序开机自启动。
3.android.intent.action.NEW_OUTGOING_CALL
外拨电话监听
4.android.intent.action.PACKAGE_ADDED
安装应用
5.android.provider.Telephony.WAP_PUSH_RECEIVED
程序接收彩信
以上只是其中几个系统广播。Android系统中基本上广播都在Intent.java类中,需要查看其他的广播action可以看一下Intent类。
接下来说一下如何用广播来分析程序行为。方法如下:
在android中,一个程序需要广播功能,必然需要注册广播,然后在广播onReceiver函数中调用intent.getAction()函数获取广播消息。因此,在android源码中,在Intent类的getAction函数返回之前,判断action字符串的值,就可以知道程序做了什么事情。比如action等于android.provider.Telephony.SMS_RECEIVED表示应用会接收短信。
基于广播方式的行为分析并不能分析android所有的行为。比如定位、访问网络、读取短信记录等行为并不需要广播。因此,基于广播方式的行为分析只能获取需要广播机制才能实现应用功能的行为。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!