温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
基于
Android
后台
监听
机制
程序
实现
基于基于 Android,Android,后台监听机制的程序实后台监听机制的程序实现现 摘要:通过对 Android 监听机制的分析,实现了手机短信的拦截和监听,通话的监听,后台未授权程序安装的监听,网络流量的监控,通过实现过程和原理分析,对防范 Android 后台监听等敏感行为具有较为普遍的理论指导意义。关键词:android;监听机制;后台 中图分类号:F416.6 文献标识码:A 文章编号:1007-9599(2012)15-0000-02 1 引言 Android 是一种以 Linux 为基础的开放源代码操作系统1。Android 后台监听一般为 BroadcastReceiver 或者利用 Service 的一种无界面的后台运行程序,本文旨在通过对后台监听行为的分析与实现,来为防护 Android 后台监听等敏感行为提供理论指导。2 基本原理 一般来讲,后台监听程序是基于 BroadcastReceiver(广播接收器)的2,因为在 Android 中,Broadcast 是一种广泛应用在应用程序之间传输信息的机制3,而后台监听程序正可以利用 Broadcast 来监听一些系统的广播,通过对广播的监听实现整个监听程序的功能。在 Android 中,应用程序的响应性被活动管理器(ActivityManager)和窗口管理器(WindowManage)这两个系统服务所监视。当用户触发了输入事件,而在五秒内没有响应用户的输入事件,那么,Android 会认为该应用无响应,便弹出 ANR(ApplicationNo Response)对话框3,因此在做耗时操作的时候,一般利用 Service3(服务)来实现,Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。3 基于后台监听机制的敏感行为的实现 通过对监听机制的分析,可以发现,只要监听系统广播,就可以完成对于整个系统的监听,尤其是对于一些相对于手机用户比较敏感的行为。比如,短信操作,通话操作,后台程序非主动的安装和卸载,以及流量统计包括联网等。3.1 监听对短信、通话的操作(1)对短信的拦截。在接收短信时,通过在 Receive 中重写 onReceive()方法来监听系统广播“android.provider.Telephony.SMS_RECEIVED”,监听到接收短信的通知后,可以在 onReceive()写入自定义的方法对其进行操作,通过内容匹配、号码匹配来进行筛选短信,对一些含有敏感词的短信或者陌生号码的短信,用 abortBroadcast()屏蔽掉其在消息栏的 Notification(通知)3。实现流程图:(2)本文实现的监听通话的操作是通过在 Receive 中改写 onReceive()方法来监听系统广播“android.intent.action.NEW_OUTGOING_CALL”,实现方式和短信操作类似,这里不做详细讨论。监听通话和短信操作都需要获得相应的权限。如接收短信、读取短信、发送短信、接听电话等权限。3.2 监听程序的安装和卸载 由于 Android 发展迅猛,Android 的安全问题越来越严峻,许多木马私自在后台安装一些恶意程序,使用智能手机的人可能都有一种经历,就是当自己调出所安装程序目录的时候,会发现很多程序根本就不是自己安装的,那么这些程序很有可能就是恶意程序。本文从后台监听方面实现了对程序安装和卸载的监听,使手机的安全性得到极大保障。在 Android 中安装和卸载程序的时候会发送一个系统广播,而一些恶意木马等通过屏蔽广播等手段,使安装恶意程序对用户透明,因此 Android 系统的安全使用受到严重威胁。本文通过 Broadcast Receiver 的 onReceive()方法,监听系统广播“android.intent.action.PACKAGE_ADDED”和“.PACAGE_REMOVED”,实现了对安装和卸载程序的监听,并用自己的方法调用 NotificationManager,实现了一个对程序安装和卸载的监听并在界面进行显示通知。如图所示,通过图中可以发现,用户可以知道所有程序的安装和卸载的时间以及包名。界面通知的实现代码4:String service=Context.NOTIFICATION_SERVICE;NotificationManager nm=(NotificationManager)context.getSystemService(service);Notification n=new Notification();n.icon=R.drawable.ic_launcher;n.tickerText=监听程序检测到消息:;n.when=System.currentTimeMillis();PendingIntent pt=PendingIntent.getActivity(context,0,null,0);n.setLatestEventInfo(context,安装了程序:,packageName,pt);nm.notify(1,n);3.3 监听程序上网流量5 经过对正常软件和恶意软件的网络流量进行统计分析后发现:正常的软件的上行流量是远小于下行流量的,而恶意软件则恰好相反,往往上行流量要大于下行流量。因此我们可以通过后台监控上网流量,对 Android 系统进行保护。Android 2.2 及其以上版本提供了一个读取网络流程数据的类 TrafficStats,该类有一系列静态函数,这些函数的功能可以实现本作品对软件网络流量的监控。本文中使用到的 TrafficStats 的静态函数如下图所示:函数名功能 getUidTcpRxBytes(int uid)User ID 为 uid 的应用程序(下同)接收到的Tcp 字节数 getUidTcpTxBytes(int uid)应用程序发送的 Tcp 字节数 getUidUdpRxBytes(int uid)应用程序接收的 Udp 字节数 getUidUpdTxBytes(int uid)应用程序发送的 Udp 字节数 getUidRxPackets(int uid)应用程序接收的数据包数(包括 Tcp 和 Udp)getUidTxPacktets(int uid)应用程序发送的数据包数(包括 Tcp 和 Udp)getUidRxBytes(int uid)应用程序接收的总字节数 getUidTxBytes(int uid)应用程序发送的总字节数 为了保证对 Android 2.1 及其以下版本的兼容性,本文利用其他手段获取程序的数据流量。通过对 TrafficStats 类的源码进行分析可以发现,其实现方法是读取/proc 目录下应用程序进程的 net/dev 文件,此文件记录了具体的网络流量数据。因此,对于较低版本的 Android 系统,我们采用直接读取/proc/net/dev 文件的方式获取应用程序的网络流量特征。4 结束语 本文主要实现了 4 种敏感行为的后台监听,对于木马的一些恶意操作做了相应猜想,对于防护木马以及对抗其他恶意程序方面提供了理论基础,对于在Android 基础上的智能手机有一定的实践指导意义。参考文献:1靳岩,姚尚朗著.Android 开发入门与实战M.人民邮电出版社,2009.2赖超等.基于 Android 平台的手机后台监听技术J.电脑知识与技术,2010,06,33.3李刚著.疯狂 android 讲义(第一版)M.电子工业出版社,2011 4郭宏志著.Android 应用开发详解M.电子工业出版社,2010 5邵玉如,孙润康等.Android 手机安全检测与取证分析系统J.(全国大学生信息安全大赛参赛文档(未公开)