Um script python (anteriormente bash ) que prepara Android APK (ou AAB, XAPK) para a inspeção de tráfego HTTPS.
O script permite ignorar o SSL Pinning no android> = 7 via reconstruindo o arquivo APK e tornando o armazenamento de credenciais do usuário confiável. Após o processamento do arquivo APK de saída, está pronto para a inspeção de tráfego HTTPS.
Se um arquivo AAB, o script criar um apk universal e o processar. Se um arquivo XAPK forneceu o script a abrigar e processar cada arquivo APK.
Funciona no macOS, Linux e Windows.
[Precisa de testes] O desempenho no Windows provavelmente será algumas vezes (~ 3,5) menor do que no macOS / Linux ( apktool leva mais tempo para decodificar o APK).
Isto:
java );bundletool (se o arquivo AAB fornecido) ou descompacte o arquivo XAPK (no caso do XAPK);apktool ;network_security_config.xml para tornar o armazenamento de credenciais do usuário como confiável;apktool ;uber-apk-signer .Opcionalmente, o script permite:
adb ;O acesso à raiz não é necessário.
Instale as ferramentas da lista abaixo:
adb à variável do ambiente do caminho)As ferramentas abaixo serão baixadas pelo script, caso esteja faltando:
Pré -condições:
pip3 install -r requirements.txt para instalar os módulos Python necessáriosO script pode ser lançado como
python3 /path/to/the/script/apk-rebuild.py
Execute python3 apk-rebuild.py -h (ou python3 apk-rebuild.py --help ) para imprimir o 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 o arquivo APK, use o script com (s) argumentos. Os exemplos estão abaixo:
Patch o arquivo AAB e não exclua o conteúdo do arquivo apk descompactado
python3 apk-rebuild.py input.aab --preserve
Patch o arquivo APK, remova o arquivo APK de origem após corrigir e instalar o arquivo APK corrigido no Android-Device
python3 apk-rebuild.py input.apk -r -i
O caminho para o arquivo de origem deve ser especificado como o primeiro argumento.
<debug-overrides> the network_security_config.xml (e adicione a propriedade android:networkSecurityConfig ao elemento application no AndroidManifest.xml , no curso): https://developer.android.com/training/articles/security-config#debug-overrides.Para relatórios de bugs, solicitações de recursos ou discutindo uma ideia, abra um problema aqui.
Muito obrigado a: