MASTG-TOOL-0027: Xposed
O Xposed não funciona no Android 9 (API level 28). Entretanto, foi portado não oficialmente em 2019 sob o nome de EdXposed, com suporte para Android 8-10 (API level 26 até 29). Você pode encontrar o código e exemplos de uso no repositório Github do EdXposed.
O Xposed é um framework que permite modificar o aspecto e o comportamento do sistema ou de aplicativos em tempo de execução, sem modificar nenhum pacote de aplicativo Android (APK) ou refazer o flashing. Tecnicamente, é uma versão estendida do Zygote que exporta APIs para executar código Java quando um novo processo é iniciado. Executar código Java no contexto do aplicativo recém-instanciado torna possível resolver, conectar (hook) e substituir métodos Java pertencentes ao aplicativo. O Xposed usa reflection para examinar e modificar o aplicativo em execução. As alterações são aplicadas na memória e persistem apenas durante o tempo de execução do processo, já que os binários do aplicativo não são modificados.
Para usar o Xposed, você precisa primeiro instalar o framework Xposed em um dispositivo com root, conforme explicado no hub do framework Xposed do XDA-Developers. Os módulos podem ser instalados através do aplicativo Xposed Installer e podem ser ativados e desativados através da interface gráfica.
Nota: considerando que uma instalação simples do framework Xposed é facilmente detectada pelo SafetyNet, recomendamos usar o Magisk para instalar o Xposed. Dessa forma, aplicativos com atestação SafetyNet devem ter maior chance de serem testáveis com módulos Xposed.
O Xposed tem sido comparado ao Frida. Quando você executa o servidor Frida em um dispositivo com root, obterá uma configuração similarmente eficaz. Ambos os frameworks oferecem grande valor quando você deseja realizar instrumentação dinâmica. Quando o Frida causa crash no aplicativo, você pode tentar algo similar com o Xposed. Além disso, similar à abundância de scripts do Frida, você pode facilmente usar um dos muitos módulos que acompanham o Xposed, como o módulo discutido anteriormente para bypass de SSL pinning (JustTrustMe e SSLUnpinning). O Xposed inclui outros módulos, como o Inspeckage, que permitem que você realize testes de aplicativos mais aprofundados. Além disso, você também pode criar seus próprios módulos para corrigir mecanismos de segurança frequentemente usados em aplicativos Android.
O Xposed também pode ser instalado em um emulador através do seguinte script:
#!/bin/sh
echo "Inicie seu emulador com 'emulator -avd NAMEOFX86A8.0 -writable-system -selinux permissive -wipe-data'"
adb root && adb remount
adb install SuperSU\ v2.79.apk #o binário pode ser baixado em 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 #o binário pode ser baixado em 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 #pode ser baixado em 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 "Agora, adb shell e execute 'su', em seguida: vá para ./data/xposed/xposed, torne o flash-script.sh executável e execute-o nesse diretório após executar o SuperSU"
echo "Em seguida, reinicie o emulador"
echo "Depois, adb install XposedInstaller_3.1.5.apk"
echo "Em seguida, execute o instalador e depois adb reboot"
echo "Quer usar novamente? Inicie seu emulador com 'emulator -avd NAMEOFX86A8.0 -writable-system -selinux permissive'"