目前中国市场,骚扰电话大量的充斥手机用户的生活,因此手机安全软件的电话拦截功能受到广泛关注和使用。但第三方应用级电话拦截功能的效果并不理想,比如拦截电话时已经响了一声、或出现短暂的来电界面,多款安全软件同时存在时可能发生冲突等,其本质原因是目前的第三方应用无法及时的、快速的判断出来电事件,拦截不及时造成的。现在@安卓安全小分队就分析其中的原理,并给出我们自己的解决方案。
一、原理分析
1、Android来电流程


 
上图中间框图中给出的是Android系统来电流程。方框的上部分(包括蓝色方框)是App层,下部分(粉色方框)为framework层。当有incomingcall发生时,RIL层会将incomingcall事件向上报给CallTracker。在CallTracker中,incomingcall事件将会通过两条路向上层走。
i)上图方框中黄色箭头所示路线。通过PhoneNotifier->TelephonyRegistry将PHONE_STATE_CHANGED通知上去。第三方应用通过SDKAPI注册listener(PhoneStateListener),监听framework层TelephonyRegistry发出的PHONE_STATE_CHANGED通知。若callstate从CALL_STATE_IDLE变成CALL_STATE_RINGING,则说明有电话打入,且打入的电话号码会包含在广播出来的intent中。
第三方安全软件的拦截功能就是通过这一原理检测到有来电以及该来电的号码(其拦截点为图中灰色方框所示)。若号码为黑名单号码,则将来电hangup。
ii)上图方框中红色箭头所示路线。通过PhoneBase->CallManager->CallNotifier->InCallScreen,即从framework->PhoneApp,将NewRingingConnection通知上去。

2、第三方应用级方案缺点
i)黑名单打入电话时,可能会有来电界面。
这是由于第三方应用只能通过左边黄色流程的PHONE_STATE_CHANGED来判断是否有来电并拦截,其拦截点比较晚,可能会出现右边红色路线已经走到InCallScreen,即来电界面已出现,左边的第三方应用才将电话hangup,用户体验不好。
ii)手机上同时存在多款安全软件时可能存在冲突。
若各个安全软件的黑名单各不相同时,若一个号码N是安全软件A的黑名单,但不是安全软件B的黑名单。由于拦截时机晚,当号码N打入时,B也会检测到有来电且无需拦截,就有可能做一系列的操作而导致此时N有可能会被接通。因此,多款安全软件的情况下,不能杜绝每个黑名单中的号码一定会被拦截掉。

二、优化和改进
针对第三方应用级方案拦截优先级低、时间延迟严重的情况,我们可以从系统入手,通过在底层拦截来提前拦截时间、提高拦截优先级,使用户根本无法感知拦截过程,在手机屏幕上不会有任何变化。
我们从底层对两条路线都做“拦截”(如上图左右两个绿色方框所示):
1、针对上图右边红色箭头所示流程,在底层PhoneBase中进行hook,每当有来电发生时,通知到我们自己的service(如上图右边绿色service方框所示),PhoneBase根据service的返回结果进行处理。具体如下:
1.1)在framework中添加一个service(上图右边绿色Service绿色方框所示),并授予它root权限。该service起来之后,等待client端的请求。并对client端暴露了一套SDKAPI接口(上图右边SecuritySDKAPI绿色方框所示):
接口:ITelephonyListener
booleanonIncomingCall(StringphoneNumber,intsimId);//callback
booleanregisterTelephonyListener(ITelephonyListenerlistener,intevents)//注册监听器
1.2)app实现并注册电话listener,当来电发生时,PhoneBase通知listener,listener返回是否需要拦截,PhoneBase根据返回值处理。
2、针对上图左边黄色所示流程,在PhoneNotifier中进行拦截,当有黑名单来电发生时根据一定的规则,阻止phonestate向上通知。

根据以上分析可知,我们的拦截在incomingcall流程的底层“静默”进行拦截,时机早,优先级高,上层用户无法感知拦截过程。并且若手机上有多个安全软件同时存在时,我们的拦截可以杜绝其他安全软件检测到来电,防止了手机上多个安全软件的冲突问题。

更多内容请关注http://blog.sina.com.cn/u/3194858670以及sina微博@安卓安全小分队

Android手机安全软件之电话拦截功能浅析相关推荐

  1. 修复 Android 系统问题的 9 款最佳 Android 手机维修软件和应用

    您可能会对新的 Android 手机印象深刻,因为它令人兴奋的性能.然而,随着时间的推移,您可能会发现系统与过去不一样.您可能会遇到屏幕无响应. Android 应用程序崩溃.连接问题.电池耗尽等现象 ...

  2. 修复常见 Android 问题的 9 款顶级 Android 手机维修软件

    许多人发现Android手机或平板电脑上的Android操作系统一开始运行得很好,但随着时间的推移,可能会出现各种Android系统问题.您可能会遇到一些问题,例如系统速度变慢.启动无响应.挂起错误. ...

  3. WiFi万能钥匙发布iOS4.0新增骚扰电话拦截功能

    近日,连尚网络旗下产品WiFi万能钥匙发布了iOS4.0最新版本.根据用户的需求反馈,WiFi万能钥匙iOS4.0新增了骚扰电话拦截等多个功能.版本更新后,WiFi万能钥匙在连接成功率和使用流畅程度上 ...

  4. 手机解锁方法:8个顶级的 Android 手机解锁软件

    一般来说,太简单的密码是不安全的,所以我们设置一个安全的密码,可能会稍微复杂一点.然而,我们可能经常会忘记复杂的密码并锁定我们的 Android 智能手机. 8个顶级的 Android 手机解锁软件 ...

  5. 无线智能插座Android手机客户端软件主控制MainActivity代码实现

    该无线智能插座Android手机客户端软件主控制MainActivity在文件中的位置如下图所示,MainActivity是Android手机客户端软件实现用户注册.登录.智能控制插座等功能的代码实现 ...

  6. android手机清理软件推荐,最好用的手机清理app

    百合清理是一款非常好用的手机清理工具,它的功能非常强大,能快速的分析出用户手机中的无用缓存和垃圾,同时能根据用户的需求深度... 猎豹海外版是一款是最轻快最安全的免费杀毒软件,猎豹海外版全面保护手机财 ...

  7. 无线智能插座的Android手机客户端软件界面开发

    该无线智能插座的Android手机客户端软件利用Android Studio开发工具进行实战开发,其开发详细的实现过程如下. 首先如下图所示,找到manifests文件下的AndroidManifes ...

  8. 无线智能插座Android手机客户端软件安装

    该无线智能插座的Android手机客户端软件的详细安装过程如下所示(以博主的nova5i手机为例): (1)首先打开Android Studio开发工具中的工程开发项目 (2)利用手机充电数据线,将充 ...

  9. 无线智能插座Android手机客户端软件展示

    最后,该无线智能插座的Android手机客户端软件展示图如下图所示:

最新文章

  1. troubleshoot之:使用JFR解决内存泄露
  2. mysql binlog purge_正确清理mysql binlog日志方法
  3. sql 动态存储过程
  4. 1.极限——例子_2
  5. 阻止默认事件event.preventDefault();
  6. 上行和下行是什么意思_为什么无线通信需要同步?
  7. asp.net生成随机数或字母验证码代码
  8. 视频分辨率QCIF、CIF、2CIF、4CIF,D1~D5
  9. oracle数据库备份:
  10. 这份Java日志格式规范,拿走不谢!
  11. 黑鲨重装计算机安装无法继续,黑鲨装机大师常见问题详解
  12. 5号字对应的数字字号_我想要个字号对照表,就比如五号字对应10.5磅,更详细一点的更好...
  13. 前端处理无网络兜底图片展示
  14. Week1.3-金融会计指标案例分析
  15. 试用期程序员应该了解的事儿
  16. pwm调速c语言,PWM调速的C语言程序编写
  17. 神经网络训练平台,在线神经网络训练
  18. VSCode配置C++环境【报错interpreter=mi】
  19. android shortcut 快捷键 相关问题记录
  20. 计算机系高考激励的句子,最新暖心激励高考生的励志句子40句

热门文章

  1. HTML5+CSS:01个人简历表
  2. 百度云盘下载慢怎么解决?百度云盘svip账号
  3. 【Tableau Desktop 企业日常技巧6.0】Tableau如何将示例工作簿替换为自定义工作簿?(windows版本)
  4. exlc如何对比_给你两张Excel表格,如何对比快速找到其中不同数据!
  5. 以太网广播TCP/IP对讲系统中的副音箱增加对讲功能的方案
  6. PPT个人学习笔记(一)——该用的和不该用的
  7. 必备软件一键安装卸载脚本(小作业)
  8. 碧桂园博智林机器人 一面面试题
  9. jquery日历插件,可自定义日期内容
  10. 8、btrfs文件系统、压缩工具