Xposed框架的使用
在 11.3 节中,我们已经初步了解了 Hook 技术,利用这个技术可以在某一逻辑的前后加入我们自定义的逻辑处理代码实现我们想要的功能,例如数据截获、输入和返回值修改等。
那 Hook 技术能否应用在 App 上呢?当然也是可以的。
Hook 技术在 App 上的应用非常广泛,例如修改朋友圈的微信步数,其实就是通过发送 Hook 数据的方法修改了步数;又如处理 SSLPining 问题时,用 Hook 技术修改 SSL 证书的校验结果,从而绕过校验过程。对于 App 爬虫,也可以 Hook 一些关键的方法拿到方法执行前后的结果,从而实现数据的截获。
那这个技术怎么实现呢?这里不得不提到一个框架——Xposed 框架。
Xposed 框架的简介
Xposed 框架是一套开源的,在 Android 高权限模式下运行的框架服务,可以在不修改 App 源码的情况下影响程序运行(修改系统)。基于 Xposed 框架,可以制作许多功能强大的模块,且这些模块可以在功能不冲突的情况下同时运作。
Xposed 框架的原理我们稍作了解即可:替换系统级别的 /system/bin/app_process 程序,控制 zygote 进程,使得 app_process 在启动过程中加载 XposedBridge.jar 包,这个 jar 包里定义了对系统方法、属性所做的一系列 Hook 操作,同时提供了几个 Hook API 供我们编写 Xposed 模块使用。我们在编写 Xposed 模块时,引用几个 Hook 方法就可以修改系统级别的任意方法和属性了。
这么说可能有点抽象,下面我们编写一个 Xposed 模块,带大家体会一下它的用法,最后再使用 Xposed 模块修改真实 App 的执行逻辑。