写在前面
这个系列本来是在公司的一个分享,内容比较多,所以就把这个PPT重新组织整理成博客,希望对大家学习有所帮助。我会先以一个”短信拦截“作为例子,抛出问题,并提出了一种基于”注入“的技术方案达到提高拦截优先级,接着再重点讲解注入的技术细节。最后,我会跟大家分享一个我业余时间开发注入框架——AIM(Android IPC Manager)。当然了,这个框架跟目前的XPosed、CydiaStructe的侧重点不太一样。
短信拦截
场景
如果某款安全支付类应用和一个未知木马安装在同一台手机,木马会截获所有的验证码短信。
问题
有什么办法可以保证安全支付类的应用可以比木马更优先截获到验证码短信呢?
解决方案
其实这类优先级抢占问题,做短信功能开发的朋友,都应该比较清楚,因为老板都关注的就是这个了,呵呵。一般的可行方案如下:
- 提高BroadcastReceiver的优先级;
- 采用动态的方式注册BroadcastReceiver;
- 注册时间要越早越好;
基于上述三点,我们的可以做如下优化:
- 监听Android的开机广播事件BOOT_COMPLETED,提早注册时间;
- 启动后,开启一个Service,并在里面以动态的注册BroadcastRec