Un script de Python (previamente bash ) que prepara Android APK (o AAB, XAPK) para la inspección del tráfico HTTPS.
El script permite evitar la fijación de SSL en Android> = 7 mediante la reconstrucción del archivo APK y hacer que el almacenamiento de la credencial de usuario sea confiable. Después de procesar, el archivo APK de salida está listo para la inspección del tráfico HTTPS.
Si un archivo AAB proporcionó el script crea un APK universal y lo procesa. Si un archivo XAPK proporcionó que el script lo desabrocha y procesa cada archivo APK.
Funciona en macOS, Linux y Windows.
[Necesita pruebas] El rendimiento en las ventanas probablemente será algunas veces (~ 3.5) más bajo que en MacOS / Linux ( apktool tarda más en decodificar el APK).
Él:
java );bundletool (si se proporciona el archivo AAB) o desabrocha el archivo XAPK (en caso de XAPK);apktool ;network_security_config.xml de la aplicación para que el almacenamiento de la credencial de usuario sea confiable;apktool ;uber-apk-signer .Opcionalmente, el script permite:
adb ;No se requiere acceso a la raíz.
Instale las herramientas en la lista a continuación:
adb a la variable de entorno de ruta)Las herramientas a continuación serán descargadas por el script en caso de que falte:
Precondiciones:
pip3 install -r requirements.txt para instalar los módulos Python requeridosEl script se puede lanzar como
python3 /path/to/the/script/apk-rebuild.py
Ejecute python3 apk-rebuild.py -h (o python3 apk-rebuild.py --help ) para imprimir el manual de uso.
usage: apk-rebuild.py [-h] [-v] [-i] [--pause] [-p] [-r] [-o OUTPUT] [--no-src] [--only-main-classes] [--ks KS]
[--ks-pass KS_PASS] [--ks-alias KS_ALIAS] [--ks-alias-pass KS_ALIAS_PASS]
file
The script allows to bypass SSL pinning on Android >= 7 via rebuilding the APK file
and making the user credential storage trusted. After processing the output APK file
is ready for HTTPS traffic inspection.
positional arguments:
file path to .apk, .aab or .xapk file for rebuilding
options:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-i, --install install the rebuilded .apk file(s) via adb
--pause pause the script execution before the building the output .apk
-p, --preserve preserve the unpacked content of the .apk file(s)
-r, --remove remove the source file (.apk, .aab or .xapk) after the rebuilding
-o OUTPUT, --output OUTPUT
output .apk file name or output directory path (for .xapk source file)
--no-src use --no-src option when decompiling via apktool
--only-main-classes use --only-main-classes option when decompiling via apktool
--ks KS use custom .keystore file for .aab decoding and .apk signing
--ks-pass KS_PASS password of the custom keystore
--ks-alias KS_ALIAS key (alias) in the custom keystore
--ks-alias-pass KS_ALIAS_PASS
password for key (alias) in the custom keystore
Para reconstruir el archivo APK, use el script con argumentos. Los ejemplos están a continuación:
Parche el archivo AAB y no elimine el contenido de archivo APK desempaquetado
python3 apk-rebuild.py input.aab --preserve
Parche el archivo APK, elimine el archivo APK de origen después de parche e instale el archivo APK parcheado en el dispositivo Android
python3 apk-rebuild.py input.apk -r -i
La ruta al archivo de origen debe especificarse como el primer argumento.
<debug-overrides> a the network_security_config.xml (y agregue la propiedad android:networkSecurityConfig al elemento application en AndroidManifest.xml por supuesto)::: https://developer.android.com/training/articles/security-config#debug-overrides.Para informes de errores, solicitudes de funciones o discutir una idea, abra un problema aquí.
Muchas gracias a: