MASTG-TOOL-0027: Xposed

Xposed 无法在 Android 9 (API level 28) 上运行。但是,它在 2019 年被非官方地移植,名为 EdXposed,支持 Android 8-10 (API level 26 到 29)。您可以在 EdXposed Github 仓库中找到代码和使用示例。

Xposed 是一个框架,允许在运行时修改系统或应用程序的方面和行为,而无需修改任何 Android 应用程序包 (APK) 或重新刷机。从技术上讲,它是 Zygote 的扩展版本,它导出了在启动新进程时运行 Java 代码的 API。在新实例化的应用程序的上下文中运行 Java 代码使得解析、钩住和覆盖属于该应用程序的 Java 方法成为可能。 Xposed 使用 反射来检查和修改正在运行的应用程序。更改应用于内存,并且仅在进程的运行时期间持续,因为应用程序二进制文件未被修改。

要使用 Xposed,您需要首先在 root 设备上安装 Xposed 框架,如 XDA-Developers Xposed framework hub 上所述。可以通过 Xposed Installer 应用程序安装模块,并且可以通过 GUI 打开和关闭它们。

注意:考虑到简单的 Xposed 框架安装很容易被 SafetyNet 检测到,我们建议使用 Magisk 来安装 Xposed。 这样,具有 SafetyNet 认证的应用程序应该有更高的机会通过 Xposed 模块进行测试。

Xposed 已被与 Frida 进行比较。当您在 root 设备上运行 Frida 服务器时,您将最终得到一个类似有效的设置。当您想进行动态检测时,这两个框架都提供了很大的价值。当 Frida 使应用程序崩溃时,您可以尝试使用 Xposed 进行类似的操作。接下来,与丰富的 Frida 脚本类似,您可以轻松地使用 Xposed 附带的众多模块之一,例如前面讨论的绕过 SSL pinning 的模块(JustTrustMeSSLUnpinning)。 Xposed 包括其他模块,例如 Inspeckage,它允许您进行更深入的应用程序测试。最重要的是,您还可以创建自己的模块来修补 Android 应用程序经常使用的安全机制。

Xposed 也可以通过以下脚本安装在模拟器上

#!/bin/sh
echo "Start your emulator with 'emulator -avd NAMEOFX86A8.0 -writable-system -selinux permissive -wipe-data'"
adb root && adb remount
adb install SuperSU\ v2.79.apk #binary can be downloaded from http://www.supersu.com/download
adb push root_avd-master/SuperSU/x86/su /system/xbin/su
adb shell chmod 0755 /system/xbin/su
adb shell setenforce 0
adb shell su --install
adb shell su --daemon&
adb push busybox /data/busybox #binary can be downloaded from https://busybox.net/
# adb shell "mount -o remount,rw /system && mv /data/busybox /system/bin/busybox && chmod 755 /system/bin/busybox && /system/bin/busybox --install /system/bin"
adb shell chmod 755 /data/busybox
adb shell 'sh -c "./data/busybox --install /data"'
adb shell 'sh -c "mkdir /data/xposed"'
adb push xposed8.zip /data/xposed/xposed.zip #can be downloaded from https://dl-xda.xposed.info/framework/
adb shell chmod 0755 /data/xposed
adb shell 'sh -c "./data/unzip /data/xposed/xposed.zip -d /data/xposed/"'
adb shell 'sh -c "cp /data/xposed/xposed/META-INF/com/google/android/*.* /data/xposed/xposed/"'
echo "Now adb shell and do 'su', next: go to ./data/xposed/xposed, make flash-script.sh executable and run it in that directory after running SUperSU"
echo "Next, restart emulator"
echo "Next, adb install XposedInstaller_3.1.5.apk"
echo "Next, run installer and then adb reboot"
echo "Want to use it again? Start your emulator with 'emulator -avd NAMEOFX86A8.0 -writable-system -selinux permissive'"