Xposed 碎碎念

最早接触 Xposed 是在 酷安网 上,约摸是2014年,那个时候的酷安还叫酷市场。当时手里就一台小米2s,由于热衷于刷机尝鲜,稀里糊涂地就接触到了Xposed。当时最震撼的莫过于 WechatUI(链接已失效),我们知道,在 Materail Design 未流行的时候,国内市场通行各式各样的美化主题和美化App,也就是那个时候的 MIUI 还有其它的国产 Rom 或者 App 来进行主题美化。而 Android 版微信还有很大的 iOS 风格,WeChatUI 却能将微信修改为 MD 风格,着实惊艳。

Xposed 的功能非常强大,不光能对其他 App 的 UI 进行修改,同时也能对其他 App 内部的逻辑进行修改,这些修改称之为 Hook,具体的修改方式包含增加,删减,替换等。Xposed 可以对几乎所有的 App 通过 Hook 的方式修改代码逻辑,应用方向也很广阔,基于 Xposed 开发的 App 一般称之为 Xposed 模块 或者 Xposed 插件。Xposed 模块可以增强系统功能(如 应用管理 治理国内毒瘤),能增删第三方 App 的功能(如 Wechat Magician 实现微信防撤回、增加图片发送上限、朋友圈关键字屏蔽功能等),甚至可以能用于第三方的逆向破解等。Xposed 功能非常强大,几乎无所不能,所以也是一把双刃剑。优点前面已说明,缺点也不少:

  • Xposed 模块安装多了之后,手机会变卡,并且会因为 Xposed 插件没跟上App版本等缘故时不时出现FC的异常
  • Xposed 插件权限相当高,会被不良商家所利用(点名批评,斗恶龙的勇者最终成为恶龙的典型,也是良心App商业化后黑化的典型:阻止运行),所以使用时需要注意。
  • Xposed 权限高,所以忌惮。目前部分 App 会检测系统中是否安装了 Xposed 框架,如果安装则不让运行(如 下厨房,摩拜单车等),甚至可以引起封号(微信? 此处存疑)。当然了,完全可以用 Xposed 去替换这些软件中检测 Xposed 框架是否存在的代码块,XD

所以,合理的使用 Xposed,能让自己的手机和 App 用起来更舒心。

Xposed 原理

Xposed 相关的三个核心项目均出自 rovo89 大佬之手:

  • Xposed:Xposed的C++部分,用来替换 /system/bin/app_process,进而控制 Zygote(受精卵) 进程。同时为 XposedBridge 提供 JNI 方法调用,并在启动 Zygote 进程的过程中加载 XposedBridge.jar。Android 系统中所有的其他进程都由 Zygote 孵化(fork)而来,所以其他应用所在进程在加载启动过程中都会含有 XposedBridge。
  • XposedBridge:加载 Xposed Modules(模块),并为 Xposed Modules(模块) 提供 API 用于开发。API 主要包括:
    1. IXposedHookZygoteInit: 在 Zygote 进程启动(即 Android 启动)过程中 Hook 的接口
    2. IXposedHookLoadPackage: 在新的 App 加载过程中 Hook 的接口,可以 Hook 当前应用的 Java 方法
    3. IXposedHookInitPackageResources: 在初始化资源过程中 Hook 的接口,可以替换当前应用的资源(图标,样式等等)。
  • XposedInstaller:Xposed 的安装程序,内含 XposedXposedBridge,并提供对 Xposed Modules 管理。

Xposed 模块推荐

在这里推荐一些实用的或者有意思的 Xposed 模块:

  • 应用管理Xposed 已开源 X-APM,应用控制类(绿色守护,黑阈,MyAndroidTools等)模块应用,神器。
  • 启用截图DisableFlagSecure 已开源 DisableFlagSecure,关掉系统底层的 FLAG_SECURE ,这样之前不能截屏/录屏的都能截屏/录屏了,比如 QQ 里面的闪图。
  • ScanLogin 已开源 ScanLogin,扫码自动登录,免去 PC 端微信登录后还需要在手机端再点一下确认登录的尴尬。
  • Xposed Edge 边缘手势操作模块,功能强大,有 pro 版。
  • 网易云音乐插件 如今的网易云音乐 Android 端越来越臃肿了,是时候用这个模块精简精简了。
  • GravityBox 重力工具箱,非常棒的系统设置模块,按照自己喜欢的样子定制 Rom,需要下载对应 Android 版本的模块。
  • 指纹支付 已开源 Xposed-Fingerprint-pay, 指纹支付模块,让不支持微信,支付宝,QQ等指纹支付的原生Rom 也能体验指纹支付。
  • WechatMagician 微信巫师,用于微信防撤回等众多有意思的扩展功能。特别值得一提的是,源码设计的很棒,汲取了其他微信相关模块每逢微信更新必崩溃的教训,自行设计一套 API,极大提高插件稳定性。
  • MDWechat Material Design 的微信,很棒。

最后再推荐一下自己开发的 Xposed 模块(凑表脸,还是后面再发文详细详解吧,摊手):

0%