写在前面


这个系列本来是在公司的一个分享。内容比較多,所以就把这个PPT又一次组织整理成博客,希望对大家学习有所帮助。我会先以一个”短信拦截“作为样例,抛出问题,并提出了一种基于”注入“的技术方案达到提高拦截优先级,接着再重点解说注入的技术细节。

最后,我会跟大家分享一个我业余时间开发注入框架——AIM(Android IPC Manager)。

当然了,这个框架跟眼下的XPosed、CydiaStructe的側重点不太一样。


短信拦截


场景

假设某款安全支付类应用和一个未知木马安装在同一台手机,木马会截获全部的验证码短信。

问题

有什么办法能够保证安全支付类的应用能够比木马更优先截获到验证码短信呢?

解决方式

事实上这类优先级抢占问题,做短信功能开发的朋友,都应该比較清楚,由于老板都关注的就是这个了,呵呵。一般的可行方案例如以下:
  • 提高BroadcastReceiver的优先级;
  • 採用动态的方式注冊BroadcastReceiver;
  • 注冊时间要越早越好;
基于上述三点,我们的能够做例如以下优化:
  • 监听Android的开机广播事件BOOT_COMPLETED。提早注冊时间。
  • 启动后,开启一个Service。并在里面以动态的注冊BroadcastReceiver;
  • 注冊的优先级调整至最高——Integer.MAX_VALUE;
关键代码例如以下所看到的:
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
filter.setPriority(Integer.MAX_VALUE);
registerReceiver(new SmsReceiver(), filter);

问题来了

通过上面这个方法。是能够解决部分问题了,但这样的方式全然没有技术含量。对处于技术第一线的黑客们根本不是问题。他们不但也採用了同样的技术,并且做得更好,在”注冊时间越早越好“这一点上,他们加入几个额外的触发点。分别例如以下:
  • WIFI_STATE_CHANED
  • CONNECTIVITY_CHANGE
  • ACCESS_NETWORK_STATE
  • ACCESS_WIFI_STATE
这几个系统事件。都比BOOT_COMPLETED触发得要早。所以木马当然能优先截获到短信了。

基于这样的对抗下,我们是否跟木马就仅仅有打成平手呢?是否有更优的解决方式?答复是肯定的。
促进科技发展最有效的方法就是战争。在这样的技术对抗中,相同也是最easy产生新的思想方案的。


基本思路

既然广播发送之后,我们有可能处于后次序。

那是否有办法,能够在广播发送之前。做一下顺序调整呢?我们知道,Android的广播发送,都是由ActivityManagerService(AMS)做路由转发的,所以AMS里肯定保存了各个BroadcastReceiver的信息以及次序,我们假设有办法能够进入到AMS里头,再通过一些反射的技巧,是否就能够在每次发送广播之前,调整广播的发送顺序呢?


这个就是我要跟大家分享的技术方案——通过注入实现短信的绝对优先拦截。技术的基本思路是这种,我们先注入到系统进程——system_process,然后截获AMS的broadcastIntent方法,加插我们的调整逻辑。

《二》里我会着重介绍注入的技术原理。然后通过一系列的DEMO解说这个方法所涉及到的技术点。


进击的Android注入术《一》的更多相关文章

  1. 进击的Android注入术《二》

    继续 在<一>里,我把基本思路描写叙述了一遍,接下为我们先从注入開始入手. 注入 分类 我们平时所说的代码注入,主要静态和动态两种方式 静态注入,针对是可运行文件,比方平时我们改动ELF, ...

  2. Android 注入详解

    Android下的注入的效果是类似于Windows下的dll注入,关于Windows下面的注入可以参考这篇文章Windows注入术.而Android一般处理器是arm架构,内核是基于linux,因此进 ...

  3. Spring 属性注入(二)BeanWrapper 结构

    Spring 属性注入(二)BeanWrapper 结构 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) BeanWrap ...

  4. Android注入完全剖析

    0 前沿 本文主要分析了一份实现Android注入的代码的技术细节,但是并不涉及ptrace相关的知识,所以读者如果不了解ptrace的话,最好先学习下ptrace原理再来阅读本文.首先,感谢源代码的 ...

  5. Android仿微信二维码扫描

    转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...

  6. Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误

    嵌套Fragment的使用及常见错误 嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment. 使用时, 主要要依靠宿主Fragment的 ge ...

  7. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

  8. 小白日记44:kali渗透测试之Web渗透-SqlMap自动注入(二)-sqlmap参数详解REQUEST

    Sqlmap自动注入(二) Request ################################################### #inurl:.php?id= 1. 数据段:--d ...

  9. Android进阶笔记06:Android 实现扫描二维码实现网页登录

    一. 扫描二维码登录的实现机制: 详细流程图: (1)PC端打开网页(显示出二维码),这时候会保存对应的randnumber(比如:12345678). (2)Android客户端扫码登录,Andro ...

随机推荐

  1. Android显示GIF动画 GifView

    android中显示gif动画原生态一般支持的不是很好,故找了一个开源的项目,现简单介绍如下: GifView 是一个为了解决android中现在没有直接显示gif的view,只能通过mediapla ...

  2. 【Tomcat MyEcplise】MyEcplise添加一个新的Server,Tomcat8.5报错

    添加新的Tomcat添加不进去,报错: The Apache Tomcat installation at this directory is version 8.5.11.  A Tomcat 8. ...

  3. PostgreSQL配置文件--QUERY TUNING

    5 QUERY TUNING 5.1 Planner Method Configuration. 下列参数控制查询优化器是否使用特定的存取方法.除非对优化器特别了解,一般情况下,使用它们默认值即可. ...

  4. 利用pycharm进行重构学习记录

    pycharm是非常强大的pythonIDE,集成了很多实用的功能,其中就包括重构Refactor 记录下使用pycharm的重构 pycharm的Refactor默认在主菜单上就有了 Refacto ...

  5. 深度增强学习--DDPG

    DDPG DDPG介绍2 ddpg输出的不是行为的概率, 而是具体的行为, 用于连续动作 (continuous action) 的预测 公式推导 推导 代码实现的gym的pendulum游戏,这个游 ...

  6. Spark Streaming updateStateByKey和mapWithState源码解密

    本篇从二个方面进行源码分析: 一.updateStateByKey解密 二.mapWithState解密 通过对Spark研究角度来研究jvm.分布式.图计算.架构设计.软件工程思想,可以学到很多东西 ...

  7. 阅读源代码的重要性:如厨师选食材,耍厨具——在Eclipse中怎样查看Java、Android源代码

    首先,非常多人说,不会看jdk中的源代码就不叫学过Java.显然这是肯定的.打个例如:真正的厨师须要从食材的选取.加工.到最后的烹饪.装盘成型,甚至到最后给用户介绍食用方法等一整套流程走下来.而实际上 ...

  8. 基于jQuery的TreeGrid组件

    /** * @author 陈举民 * @version 1.0 * @link http://chenjumin.iteye.com/blog/419522 */ TreeGrid = functi ...

  9. 让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新

    本文是对下文的补充,切勿以为我是全盘复制哦 连接: http://www.cnblogs.com/wlflovenet/p/4187455.html Normal 0 7.8 磅 0 2 false ...

  10. 安装Vagrant出错 安装Homestead出错失败

    安装Vagrant出错 安装Homestead出错     我们也可以在电脑上创建其它文件夹,只需保证创建的文件夹路径跟 Homestead.yaml 文件中的 folders - map 保持一致即 ...