Скрипт Python (ранее bash ), который готовит Android APK (или AAB, XAPK) для инспекции трафика HTTPS.
Скрипт позволяет обходить SSL -закрепление на Android> = 7 через восстановление файла APK и обеспечение доверия к хранилищу учетных данных пользователя. После обработки выходной файл APK готов к HTTPS Traffic Inspection.
Если файл AAB предоставил скрипт создает универсальный APK и обрабатывает его. Если файл XAPK предоставил скрипт неопытный его и обрабатывает каждый файл APK.
Работает на MacOS, Linux и Windows.
[Требует тестирования] Производительность на окнах, вероятно, будет в несколько раз (~ 3,5) ниже, чем в macOS / Linux ( apktool занимает больше времени, чтобы декодировать APK).
Это:
java );bundletool (если предоставлен файл AAB) или раскрывает файл XAPK (в случае XAPK);apktool ;network_security_config.xml , чтобы сделать хранение учетных данных пользователя как доверительное;apktool ;uber-apk-signer .При желании скрипт разрешил:
adb ;Корневой доступ не требуется.
Установите инструменты из приведенного ниже списка:
adb к переменной среды Path)Инструменты ниже будут загружены сценарием на случай, если его не хватает:
Предварительные условия:
pip3 install -r requirements.txt для установки необходимых модулей PythonСценарий может быть запущен как
python3 /path/to/the/script/apk-rebuild.py
Выполнить python3 apk-rebuild.py -h (или python3 apk-rebuild.py --help ), чтобы распечатать руководство по использованию.
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
Для восстановления файла APK используйте скрипт с аргументами. Примеры ниже:
Установите файл AAB и не удаляйте распакованный содержимое файла APK
python3 apk-rebuild.py input.aab --preserve
Установите файл APK, удалите исходный файл APK после исправления и установите исправленный файл APK на Android-Device
python3 apk-rebuild.py input.apk -r -i
Путь к исходному файлу должен быть указан как первый аргумент.
<debug-overrides> в the network_security_config.xml (и добавьте свойство android:networkSecurityConfig в элемент application в AndroidManifest.xml конечно):: https://developer.android.com/training/articles/security-config#debug-overrides.Для отчетов об ошибках, запросов функций или обсуждения идеи откройте здесь проблему.
Большое спасибо: