高级玩机(搞机)Hook 工具 Xposed、EdXposed、VirtualXposed、Magisk、TaiChi(太极)、Xpatch

由于 Android 天生的开放特性,所以非常适合折腾。一些高级玩机技巧,开发破解应用特技等都可以通过本文提供的工具来搞定。

Xposed

准确的说整个 Xposed 是一个项目,它是由如下几个模块组成的:

  • Xposed:这个模块实现了一套用来替换系统原生的 zygote 的xposed 版的 zygote。所以,它需要由 XposedInstaller 在 root 之后放到 /system/bin 目录下。
  • XposedBridge:这个模块属于 Xposed 框架的 Java 部分,编译出来是一个 XposedBridge.jar 包。
  • XposedTools:Xposed 和 XposedBridge 编译依赖于 Android 源码,而且还有一些定制化的东西。所以 XposedTools 就是用来编译 _Xposed_ 和 _XposedBridge_ 的。
  • XposedInstaller:它是用于插件管理和功能控制的 APP,也就是说 Xposed 整体管控功能就是由这个 APP 来完成的,它包括启用 Xposed 插件功能,下载和启用指定插件 APP,还可以禁用 Xposed 插件功能等。注意,这个 app 要正常无误得运行必须授予 root 权限。

Xposed 是从系统底层直接 hook 了 Android 虚拟机,因此需要 root 权限,而且每次开启新的插件模块都要重启系统。

Xposed 插件就是一种特殊的 APP。这种类型的 APP 由 Xposed 框架识别并加载(通过在 manifest 文件添加 meta 属性来标记),然后 hook 到其他的 App 进程。

关于 Xposed 的更多详细信息,及代码剖析可以拜读邓凡平老师的文章《深入理解 Android(三):Xposed 详解》

EdXposed

Xposed 只支持 Android 4.0 – 7.1 的设备,虽然官方也支持了 8.0 – 10.0,但是只适用于 Android 原生 ROM,对于国内各厂商定制的 ROM 如 MIUI 仍然无法使用。

EdXposed 全称 Elder driver Xposed Framework(老司机 Xposed 框架),由国内开发者开发,能够支持 Android 8.0~11 完全实现 Xposed 框架的相关功能。

EdXposed 需要配合 Magisk 才能使用。

Magisk

Magisk 是一套用于 DIY Android 系统的开源软件,支持 Android 5.0 以上的设备,它提供了以下功能和模块:

  • MagiskSU:为应用程序提供 root 访问权限
  • Magisk 模块:通过安装模块修改只读分区
  • MagiskBoot : 最完整的安卓启动镜像解包和重新打包工具

Magisk 和 Xposed 的工作机制都是【拦截】,区别在于:

  • Xposed 通过劫持 Android 系统的 zygote 进程来加载自定义功能,这就像是半路截杀,在应用运行之前就已经将我们需要的自定义内容强加在了系统进程当中。
  • Magisk 则另辟蹊径,通过挂载一个与系统文件相隔离的文件系统来加载自定义内容,为系统分区打开了一个通往平行世界的入口,所有改动在那个世界(Magisk 分区)里发生,在必要的时候却又可以被认为是(从系统分区的角度而言)没有发生过。
Xposed/Magisk 原理比较图

因此严格来说 Magisk 可以被看作是一种文件系统,这种文件系统通过巧妙的实现方式避开了对系统文件的直接修改,从稳定性上来看要优于以往任何一种系统框架。

VirtualXposed

Xposed 和 EdXposed 虽然强大,但是需要 ROOT 手机,存在很大的安全风险。

VirtualXposed 的诞生解决了安全风险的问题,并且与 Xposed 的插件完全兼容。

以下是来自 VirtualXposed 官方的介绍:

VirtualXposed 是基于 VirtualApp 和 epic 在非 ROOT 环境下运行Xposed 模块的实现(支持 Android 5.0~10.0)。

与 Xposed 相比,目前 VirtualXposed 有两个限制:

  1. 不支持修改系统(可以修改普通APP中对系统API的调用),因此重力工具箱,应用控制器等无法使用。
  2. 暂不支持资源HOOK,因此资源钩子不会起任何作用;使用资源HOOK的模块,相应的功能不会生效。

VirtualXposed 实际就是一个虚拟机其中带了 Xposed,然后将要hook 的应用也安装到虚拟机中。

太极

太极是一个可以免 Root 运行的类 Xposed 框架,它和 VirtualXposed 的作者是同一个人。

太极具有以下特点:

  • 完美支持包括 Android 5.0 ~ 12 在内的几乎所有机型(如华为、三星、小米,Oppo和 Vivo 等)。
  • 无需 Root 也可以体验各种插件的强大功能,有 Root 之后能解锁更多的能力。
  • 太极不影响全局。可以只对特定的应用开启 Xposed 功能,无需使用 Xposed 的 APP 运行起来就跟系统没有 Xposed 一样;这意味着太极能轻松绕过 SafetyNet 检测,完美契合某些金融/银行/奇葩类 APP。
  • 太极更不易被检测。太极的弱侵入特性不再修改 ART 运行时,也不在全局环境中留下任何踪影;因此只要想要做到,可以轻松逃过各种代码类型的检测。

Xpatch

Xpatch 是一个通过重新签名打包 Apk 文件,使重打包后的 Apk 能加载已安装的 Xposed 插件,从而实现免 Root Hook 任意 App 的工具。

Xpatch 的原理是对 Apk 文件进行二次打包,重新签名,并生成一个新的 Apk 文件。在 Apk 二次打包过程中,插入加载 Xposed 插件的逻辑,这样新的 Apk 文件就可以加载任意 Xposed 插件,从而实现免Root Hook 任意 App 的 Java 代码。

总结

本文介绍了几款常用的 Hook 工具以及各自的优缺点,具体使用哪个读者可以按需自取。

点击开始打造自己的 Xposed 插件

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注