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可以实现的黑科技
- 微信,QQ自动抢红包
- 微信,QQ防撤回
- 免费下载音乐软件收费内容
- 绿色守护控制后台
- 修改手机各种各样信息
- 破解各种软件
这里还有很多功能不一一列举,有兴趣可以去我的网站看看,后期放出来。
Xposed衍生品介绍
Xposed可以实现非侵入式的在运行期动态修改系统和应用行为的能力,但有着一个巨大的缺点,就是需要Root权限。本文介绍开源框架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的方法替换成补丁文件中的方法。
方法替换过程: