当前位置:C++技术网 > 资讯 > 程序员冒死揭露黑产系列之:通道劫持与动态注入

程序员冒死揭露黑产系列之:通道劫持与动态注入

更新时间:2016-01-21 19:34:09浏览次数:1+次

  说到Root,使用过安卓手机的朋友们一定是耳熟能详,肯定也有不少应用程序在大家的手中被赋予了Root权限。虽然我们使用Root权限的目的可能只是为了卸载内置应用、apk自动安装、管理后台进程或者限制后台流量,然而你不知道的是,在你点击“授权”的一瞬间,你可能已经开启了“裸奔”模式,下面请同学们继续拿出小板凳坐好,听我来简单介绍下这个“裸奔”模式的开启原理。

  一个App,无论复杂如微信还是简单如图片查看器,他们都需要遵循系统对应的“开发框架”,获取系统提供的能力,来完成自己产品对应的功能。如启动,获取用户的操作,发送网络数据等。“开发框架”定义了一些app获取系统能力的“通道”,app通过这些“通道”就可以很方便的使用系统对应的能力。在这里,应用程序和操作系统之间的关系可以抽象成下图:

  我们发送的每一条信息,输入的每一个密码,分享的每一条说说,拍摄的每一张照片都需要经过这个“通道”,由操作系统处理后才能完成。

  很明显,“通道”是实现功能的“必经之路”,如果“通道”被劫持、篡改,我们的敏感信息就很有可能被暴露。然而很不幸的是,  这种劫持、篡改通道的技术已经很成熟了,一般我们都称它为“动态注入”。在被注入后,应用程序与操作系统间的“通道”就会变成下图:

  也就是说所有的数据都会被某个“其他应用”“窥视”一遍,然后才会到达系统。

  如果你的手机可以获得Root权限,并且手机上安装了某个具有“动态注入”能力的“其他应用”A,那么,当你使用应用程序时,应用程序的启动和运行可能会经历下面的过程:

应用程序启动后,A会使用“动态注入”技术,将自己的“窥视”代码注入到应用程序的进程中。

“窥视”代码被注入后,会针对性的拦截应用程序到系统的“通道”。

当应用程序使用“通道”时,数据会先被A应用“窥视”后,才会交给操作系统。

监控应用程序的行为,只需如此“简单”的三步,并不比“把大象放冰箱里”复杂。

  最后,引用一下“技术本身并不可耻”的名言,“动态注入”如果能够合理利用,可以通过获取用户的使用习惯来做一些针对性的体验优化,还可以控制一些软件的自启动和流量使用。然而,相信在这个浮躁的社会里,并不是每个人都像我一样单纯、善良。

  对了,再补充一句:该技术不仅仅适用于安卓系统。