极客学院 ·

Xposed源码概述以及衍生的免Root框架

Xposed

XPosed是与Cydia其名的工具,它能够让Android设备在没有修改源码的情况下修改系统中的API运行结果。我们通常称之为:God Mode(上帝模式)。

那么,它的原理和它的内部构造是如何构成的?下面,我们从Github上看看,rovo89大神是如何制作的。

项目 说明
Xposed Xposed框架的native部分(主要是改性app_process二进制文件)
XposedInstaller Xposed框架的Android端本地管理,环境架构搭建,以及第三方module资源下载的工具。
XposedBridge Xposed向开发者提供的API与相应的工具类库
Xposed_ART Xposed为了支持从安卓5.0开始的ART运行模式
XposedTools 这些工具可以用来编译和打包的Xposed框架

XposedInstaller的构成

如下图所示,是我们在XPosedInstaller apk中见到的,安装xposed框架的界面。

InstallerFragment我们能够在其中找到install方法,其中主要就是针对使用不同方式的将自定义的app_process文件替换掉系统的app_process文件。

但是,自从安卓ART模式开启后,即5.0之后。Xposed安装方式就要通过卡刷Zip包来实现,或者直接编译在第三方ROM包。

如图,我的一加5就不可以直接安装Xposed。

Xposed原理

XposedInstaller所有的工作都是为了app_process文件的替换。app_process是andriod app的启动程序

Xposed的实现方案

针对Hook的不同进程来说又可以分为全局Hook与单个应用程序进程Hook,我们知道在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的。

Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例。所以如果选择对Zygote进程Hook,则能够达到针对系统上所有的应用程序进程Hook,即一个全局Hook。如下图所示:

HOOK就是传说中的钩子,用于劫持消息。

Xposed可以实现的黑科技

  1. 微信,QQ自动抢红包

  2. 微信,QQ防撤回

  3. 免费下载音乐软件收费内容

  4. 绿色守护控制后台

  5. 修改手机各种各样信息

  6. 破解各种软件

这里还有很多功能不一一列举,有兴趣可以去我的网站看看,后期放出来。

Xposed衍生品介绍

Xposed可以实现非侵入式的在运行期动态修改系统和应用行为的能力,但有着一个巨大的缺点,就是需要Root权限。本文介绍并无需Root也能Hook的Alibaba开源框架Depoxsed方案和其二代AndFix。

局限性:不能进行登录劫持了,不能注入广告了,不可以有上述Xposed的全局强大功能了。所以主要用于Hook热修复。

Depoxsed

它的官方介绍如下:

官方

它基于ROOT社区著名开源项目Xposed改造剥离了ROOT部分,演化为服务于所在应用自身的AOP框架,并在Apache 2.0协议下开源。

AOP编程,在线热补丁

没错,Dexposed框架主要的功能,还是提供作为AOP框架使用。这么一来的话,我们之前也介绍过Android的插件实现方式。这里我们所用Dexposed框架来实现的话,插件模型将会更加简单。

如在主线版本中,我们有一个showDialog方法。已经发布出去了。但是,突然发现有一点Bug或者突发性需求,我们不能够理解的发版更新。

1.这里就能够通过之前我们所说的DexClassLoader的方式,载入线上的插件Path.apk。

2.通过Dexposed框架,动态的Hook并替换主线版本中的showDialog函数方法。

具体的逻辑如下图所示:

AndFix

Andfix 是 "Android hot-fix" 的缩写。

AndFix 支持 Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。AndFix 的分支是 .apatch 文件。

AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。

方法替换过程:

参与评论