Как установить файлы .apks через SAI, Lucky Patcher или ZArchiver
В этой небольшой инструкции мы расскажем об установке split-файлов на операционной системе Android. В статье будет описано два способа — с помощью приложений Lucky Patcher и ZArchiver.
Оглавление
Инструкция SAI
1) Скачайте и установите приложение Split APKs Installer (SAI) с телеграм-канала @EasyAPK. Если у вас появляется окно с текстом о несовместимости программы с новой версией Android, то просто нажмите кнопку Подробнее → Все равно установить.
2) Найдите нужный для установки apks-файл в телеграм-канале @EasyAPK, скачайте его и сохраните в загрузки.
3) Откройте приложение SAI, нажмите кнопку «Установить APK», выберите встроенный файлпикер и разрешите доступ к памяти.
Далее найдите ранее сохраненный apk-файл по пути Download/Telegram/ (у вас может отличаться).
Нажмите на галочку рядом с нужным apks-файлом и на кнопку «Выбрать», после чего подтвердите кнопкой «Установить». После этого нужно подождать сборку приложения и ни в коем случае не сворачивать приложение!
Далее приложение потребует разрешить установку приложений. На скриншотах выше показана эта процедура, но на ваших прошивках она может отличаться.
После этого появится окно с кнопкой «Установить» — просто жмите на нее и предварительно убедитесь в том, что на устройстве достаточно свободной памяти. После завершения установки можно запускать игру.
Инструкция Lucky Patcher
1) Скачайте приложение-установщик Lucky Patcher с телеграм-канала @EasyAPK . При установке у вас скорее всего сработает защита Google Play — просто игнорируйте предупреждение. Lucky Patcher не является вредоносной программой, а блокировка происходит из-за его функционала по взлому платных приложений из Play Market.
2) Запустите установщик Lucky Patcher и выдайте ему все необходимые для работы разрешения. Согласитесь на установку Lucky Patcher и обязательно поставьте галочку на пункте «Включить возможность установки apk файлов. ».
3) Теперь можно запустить сам Lucky Patcher и выдать ему необходимые разрешения.
После этого заходим в телеграм-канал @EasyAPK и находим нужный вам .apks-файл для установки. Скачиваем его и открываем через Lucky Patcher. Подтверждаем установку и на этом все — теперь вы можете открыть нужную вам игру или приложение.
Инструкция ZArchiver
1) Скачайте и установите приложение ZArchiver на телеграм-канале @EasyAPK.
2) Скачайте нужный вам .apks-файл с телеграм-канала @EasyAPK, а также сохраните его в Загрузки через контекстное меню
3) Откройте ZArchiver, выдайте ему необходимые права (если понадобится) и перейдите по пути /Download/Telegram/ и там найдите сохраненный вами apks-файл.
Нажмите на файл и в меню выберите пункт «Установить», после чего выдайте ZArchiver права на установку, подождите обработки файла и еще раз нажмите кнопку «Установить».
Подписывание пакета APK вручную
После сборки приложения для выпуска и до распространения необходимо подписать пакет APK, чтобы его можно было запускать на устройстве Android. Как правило, этот процесс обрабатывается в интегрированной среде разработки, однако существуют ситуации, когда пакет APK нужно подписать вручную с использованием командной строки. В ходе процесса подписывания пакета APK выполняются следующие действия:
- Создание закрытого ключа . Этот шаг необходимо выполнить только один раз. Закрытый ключ необходим для подписывания пакета APK цифровой подписью. После подготовки закрытого ключа это действие можно пропустить для будущих сборок выпуска.
- Zipalign APK . Zipalign — это процесс оптимизации, выполняемый в приложении. Он позволяет Android более эффективно взаимодействовать с пакетом APK во время выполнения. Xamarin.Android проводит проверку во время выполнения и запретит запуск приложения, если пакет APK не был оптимизирован.
- Подписывание APK — на этом шаге используется служебная программа apksigner из пакета SDK для Android и подписывание ПАКЕТА APK с помощью закрытого ключа, созданного на предыдущем шаге. Приложения, разработанные с применением средств сборки пакета SDK для Android, вышедших до v24.0.3, будут использовать приложение jarsigner из пакета JDK. Оба эти средства обсуждаются более подробно ниже.
Важно соблюдать порядок действий, который зависит от средства, применяемого для подписывания пакета APK. При использовании apksigner важно сначала оптимизировать приложение с помощью zipalign, а затем подписать его с помощью apksigner. Если для подписывания пакета APK необходимо использовать jarsigner, то важно сначала подписать пакет APK, а затем запустить zipalign.
Предварительные требования
В этом руководстве будет рассматриваться использование apksigner из средств сборки пакета SDK для Android v24.0.3 или более поздней версии. Предполагается, что пакет APK уже собран.
Для приложений, созданных с помощью более ранней версии средств сборки пакета SDK для Android, следует использовать средство jarsigner, как описано в разделе Подписывание пакета APK с помощью jarsigner.
Создание закрытого хранилища ключей (keystore)
keystore — это база данных сертификатов безопасности, которая создается с помощью программы keytool из пакета SDK для Java. Хранилище ключей крайне важно для публикации приложения Xamarin.Android, так как Android не будет запускать приложения, не имеющие цифровой подписи.
Во время разработки для подписывания приложения Xamarin.Android использует хранилище ключей, что позволяет развернуть приложение непосредственно в эмуляторе на устройствах, настроенных для использования отлаживаемых приложений. Однако это хранилище ключей не распознается как допустимое для распространения приложений.
Поэтому для подписывания приложений необходимо создать и использовать закрытое хранилище ключей. Это действие выполняется только один раз, так как один и тот же ключ будет использоваться для публикации обновлений и для подписывания других приложений.
Очень важно обеспечить безопасность этого хранилища ключей. В случае его потери будет невозможно публиковать изменения для приложения в Google Play. Единственное решение проблемы, связанной с потерянным хранилищем ключей, заключается в создании нового хранилища ключей, повторном подписывании пакета APK новым ключом и отправке нового приложения. Старое приложение потребуется удалить из Google Play. Аналогично, в случае нарушения безопасности нового хранилища ключей или его публичного распространения в широкую доступность могут выйти неофициальные или вредоносные версии приложения.
Создание нового хранилища ключей
Для создания нового хранилища ключей требуется средство командной строки keytool из пакета SDK для Java. Ниже приведен пример использования keytool (замените именем файла хранилища ключей, а — именем ключа в хранилище ключей):
$ keytool -genkeypair -v -keystore .keystore -alias -keyalg RSA \ -keysize 2048 -validity 10000
Сначала keytool запросит пароль для хранилища ключей. Затем он запросит определенные сведения, которые помогут в создании ключа. Ниже приведен пример создания ключа publishingdoc , который будет храниться в файле xample.keystore :
$ keytool -genkeypair -v -keystore xample.keystore -alias publishingdoc -keyalg RSA -keysize 2048 -validity 10000 Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: Ham Chimpanze What is the name of your organizational unit? [Unknown]: NASA What is the name of your organization? [Unknown]: NASA What is the name of your City or Locality? [Unknown]: Cape Canaveral What is the name of your State or Province? [Unknown]: Florida What is the two-letter country code for this unit? [Unknown]: US Is CN=Ham Chimpanze, OU=NASA, O=NASA, L=Cape Canaveral, ST=Florida, C=US correct? [no]: yes Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with a validity of 10,000 days for: CN=Ham Chimpanze, OU=NASA, O=NASA, L=Cape Canaveral, ST=Florida, C=US Enter key password for (RETURN if same as keystore password): Re-enter new password: [Storing xample.keystore]
Чтобы получить список ключей, хранящихся в хранилище ключей, используйте keytool с параметром – list :
$ keytool -list -keystore xample.keystore
Оптимизация пакета APK
Перед подписыванием пакета APK с помощью apksigner сначала необходимо оптимизировать файл с помощью средства zipalign из пакета SDK для Android. zipalign выравнивает ресурсы в пакете APK по 4-байтовым границам. Благодаря выравниванию Android может быстро загружать ресурсы из пакета APK, повышая производительность приложения и потенциально сокращая использование памяти. Чтобы определить, прошел ли пакет APK оптимизацию, Xamarin.Android будет проводить проверку во время выполнения. Если пакет APK не оптимизирован, приложение не запустится.
Следующая команда использует подписанный пакет APK, а ее результатом будет подписанный, оптимизированный пакет APK helloworld.apk, готовый к распространению.
$ zipalign -f -v 4 mono.samples.helloworld-unsigned.apk helloworld.apk
Подписывание пакета APK
Оптимизированный пакет APK необходимо подписать с использованием хранилища ключей. Для этого предназначено средство apksigner, находящееся в каталоге build-tools версии средств сборки пакета SDK. Например, если установлены средства сборки пакета SDK для Android v25.0.3, apksigner можно найти в следующем каталоге:
$ ls $ANDROID_HOME/build-tools/25.0.3/apksigner /Users/tom/android-sdk-macosx/build-tools/25.0.3/apksigner*
В следующем фрагменте предполагается, что средство apksigner доступно для переменной среды PATH . Пакет APK подписывается с помощью псевдонима ключа publishingdoc , содержащегося в файле xample.keystore.
$ apksigner sign --ks xample.keystore --ks-key-alias publishingdoc mono.samples.helloworld.apk
При выполнении этой команды при необходимости apksigner запросит пароль для хранилища ключей.
Дополнительные сведения об использовании apksigner см. в документации Google.
Согласно проблеме Google 62696222, средство apksigner «отсутствует» в пакете SDK для Android. Решением этой проблемы является установка средств сборки пакета SDK для Android v25.0.3 и использование этой версии apksigner.
Подписывание пакета APK с помощью jarsigner
Сведения в этом разделе применимы, если пакет APK необходимо подписать с помощью программы jarsigner. Для подписывания пакета APK разработчикам рекомендуется использование apksigner.
Эта методика предполагает подписывание APK-файла с помощью jarsigner из пакета SDK для Java. Средство jarsigner входит в состав пакета SDK для Java.
Далее показано, как подписать пакет APK с помощью jarsigner и ключа publishingdoc , содержащегося в файле хранилища ключей xample.keystore:
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore xample.keystore mono.samples.helloworld.apk publishingdoc
При использовании jarsigner важно сначала подписать пакет APK, а затем использовать средство zipalign.
Связанные ссылки
- Подписывание приложений
- jarsigner
- keytool
- zipalign
- Средства сборки 26.0.0: куда пропало средство apksigner?
4 метода обхода верификации SSL-сертификатов в Android
Прошли те времена, когда мобильные приложения мужественно игнорировали все ошибки, связанные с SSL, и позволяли перехватывать и модифицировать трафик.
- Добавление сертификатов в хранилище достоверных сертификатов.
- Перезапись упакованных сертификатов.
- Использование скрипта Frida для обхода проверок SSL-сертификатов.
- Изменение кода проверки сертификата.
Некоторые из вышеуказанных техник — простые, другие – более сложные в реализации. Мы рассмотрим каждый из этих методов без особого углубления в специфические детали.
Зачем нужна MITM-атака на SSL
Чтобы просматривать и изменять вызовы веб-службы, используемой мобильным приложением, нам понадобится промежуточный прокси сервер для перехвата, созданный при помощи утилит навроде BurpSuite или ZAP. При перехвате SSL-трафика SSL-соединение прерывается на стороне прокси-сервера. Сертификат, отсылаемый прокси-сервером, анализируется мобильным приложением, как если бы прокси был оконечной точкой веб-службы. По умолчанию самоподписанный сертификат, генерируемые утилитами наподобие Burp, не будет принадлежать проверенной достоверной цепочке. Если сертификат нельзя проверить на достоверность, большинство мобильных будут обрывать соединение вместо того, чтобы подключаться и работать в потенциально незащищенном канале. Техники, представленные ниже, предназначены для одной цели – убедить мобильное приложение, что сертификат, отправляемый прокси-сервером, является достоверным.
Техника 1 – Добавление сертификата в хранилище пользовательских сертификатов
Самый простой способ избежать SSL-ошибок – обзавестись валидным и надежным сертификатом. Эта задача решается относительно просто, если вы сможете установить достоверный сертификат на устройство. Если операционная система доверяет вашему центру сертификации, то будет доверять и сертификату, подписанному центром сертификации.
В Android есть два встроенных хранилища сертификатов, которые отслеживают, каким центрам сертификации доверяет операционная система: системное хранилище (хранит предустановленные сертификаты) и пользовательское хранилище (хранит сертификаты, добавленные пользователями).
Выдержка с сайта developer.android.com:
По умолчанию безопасные соединения (использующие протоколы TLS, HTTPS и им подобные) во всех приложениях доверяют предустановленным системным сертификатам. В Android 6.0 (API level 23) и более ранних версиях по умолчанию также считаются достоверными сертификаты, добавленные пользователями. Приложение может настраивать свои собственные соединения на уровне приложения (base-config) и на уровне домена (domain-config).
Сей факт означает, что, если мы имеем дело с приложением, которое работает в Android 6.0 и более ранних версиях, то можно просто добавить сертификат в пользовательское хранилище. Когда приложение пытается проверить достоверность цепочки для нашего сертификата, то обнаружит, что наш центр сертификации связан с достоверным хранилищем и, следовательно, будет доверять нашему сертификату. В более новых версиях приложение не будет доверять хранилищу пользовательских сертификатов. Чтобы решить эту проблему, нужно прописать такой уровень API и версию Android, чтобы приложение стало доверять пользовательским центрам сертификации. Мы будем редактировать атрибут «platformBuildVersionCode» элемента «manifest» в файле AndroidManifest.xml.
В коде выше в строке «platformBuildVersionCode=25» нужно поменять значение 25 на 23, а в строке platformBuildVersionName=»7.1.1″ значение 7.1.1 на 6.0.
После переупаковки приложения с обновленным файлом AndroidManifest.xml, доверие пользовательским центрам сертификации будет восстановлено.
Если требуется запуск на конкретной версии платформы, мы можем определить тэг trust-anchors в файле «/res/xml/network_security_config.xml». Например, следующий файл (https://developer.android.com/training/articles/security-config.html) определяет новый достоверный сертификат, который должен храниться по адресу /res/raw/my_ca.
Если в приложении будет проходить проверку только указанный сертификат, условия для успешного выполнения этой техники выполняются.
Техника 2 – Перезапись упакованного сертификата
Если после установки сертификата в пользовательское хранилище, изменении в настройках версии Android и успешном прохождении проверок при просмотре других ресурсов, защищенных протоколом SSL, все равно возникают ошибки, значит, разработчики внедрили дополнительные условия, которым должны удовлетворять достоверные центры сертификации. Если не забыли, в предыдущей технике внутри тэга trust-anchors добавлялся новый путь к сертификату. Подобный трюк может использоваться разработчиками для защиты приложений от перехвата SSL.
Если в приложении используется индивидуальная цепочка сертификатов, может сработать метод, связанный с перезаписью сертификата. Поскольку в некоторых случаях разработчики могут предусмотреть дополнительные методы для проверки достоверной цепочки, эта техника не гарантирует стопроцентного результата.

Рисунок 1: Перечень сертификатов, используемых приложением
Если открыть пакет приложения при помощи, например, APK Studio, то можно сразу увидеть перечень привязанных сертификатов. На картинке выше сертификаты находятся в папке «assets». Замена явно бросающегося в глаза сертификата UniversalRootCA позволит нам подсунуть приложению наш сертификат.
Техника 3 – Подключение к функциям через фреймворк Frida
Если установки собственного сертификата недостаточно для успешного перехвата SSL-трафика, скорее всего, в приложении используются техники навроде SSL pinning или дополнительная SSL-валидация. В этом случае нужно блокировать проверки через непосредственное подключение к соответствующим функциям. Ранее эта техника была доступна для реализации только на устройствах с правами суперпользователя. Однако на данный момент при помощи библиотеки Frida Gadget можно работать с приложением и получить доступ к полному функционалу фреймворка Frida без прав суперпользователя.
Если вы уже выполняли пентесты мобильных приложений, то, вероятно, знакомы с этим фреймворком. Описание всей функциональности Frida выходит за рамки этой статьи, но если говорить в общем, то этот фреймворк позволяет изменять логику работы приложения во время выполнения. Обычно Frida работает как отдельное приложение и требует прав суперпользователя на устройстве. Если у нас нет прав суперпользователя, мы можем инжектировать в пакет приложения динамическую библиотеку Frida Gadget, содержащую большую часть функционала фреймворка Frida. Эта библиотека загружается во время выполнения приложения и позволяет вносить изменения в код.
Чтобы загрузить Frida Gadget, нужно распаковать APK, вставить динамическую библиотеку, отредактировать smali-код так, чтобы динамическая библиотека вызывалась самой первой, а затем переупаковать и установить пакет. Весь этот процесс хорошо задокументирован Джоном Козиракисом (John Kozyrakis). Вначале лучше пройти все этапы вручную, чтобы лучше понять, как работает эта технология. Чтобы сэкономить время, существует утилита — Objection, которая автоматизирует весь вышеупомянутый процесс. Требуется лишь указание целевого пакета, над которым нужно выполнить манипуляции.
C:\ >objection patchapk -s test_app.apk No architecture specified. Determining it using `adb`. Detected target device architecture as: armeabi-v7a Github FridaGadget is v10.6.28, local is v10.6.13. Updating. Downloading armeabi-v7a library to C:\.objection\android\armeabi-v7a\libfrida-gadget.so.xz. Unpacking C:\.objection\android\armeabi-v7a\libfrida-gadget.so.xz. Cleaning up downloaded archives. Using Gadget version: 10.6.28 Unpacking test_app.apk App already has android.permission.INTERNET Reading smali from: C:\Temp\tmp8dxqks1u.apktemp\smali\com/test/app/TestMainActivity.smali Injecting loadLibrary call at line: 10 Writing patched smali back to: C:\Temp\tmp8dxqks1u.apktemp\smali\com/test/app/TestMainActivity.smali Creating library path: C:\Temp\tmp8dxqks1u.apktemp\lib\armeabi-v7a Copying Frida gadget to libs path. Rebuilding the APK with the frida-gadget loaded. Built new APK with injected loadLibrary and frida-gadget Signing new APK. jar signed. Signed the new APK Performing zipalign Zipaling completed Copying final apk from C:\Users\cwass\AppData\Local\Temp\tmp8dxqks1u.apktemp.aligned.objection.apk to current directory. Cleaning up temp files.
После завершения в нашей рабочей директории должен появиться файл «test_app.objection.apk». По умолчанию утилита objection добавляет постфикс «.objection» к имени пакета. Далее мы можем установить этот пакет так же, как и любой другой APK, при помощи команды adb install test_app.objection.apk. После того как измененный пакет установлен на целевом устройстве, во время запуска приложение должно встать на паузу на начальном экране. В этот момент мы можем подключиться к серверу Frida, который отслеживает наше устройство:
C:\>frida-ps -U
PID Name
—- ——
6383 Gadget
C:\>frida -U gadget
____
/ _ | Frida 10.3.14 — A world-class dynamic instrumentation framework
| (_| |
> _ | Commands:
/_/ |_| help -> Displays the help system
. . . . object? -> Display information about ‘object’
. . . . exit/quit -> Exit
. . . .
. . . . More info at http://www.frida.re/docs/home/
[Motorola Moto G (5) Plus::gadget]-> Java.available
true
Alternatively, Objection supports interaction with the listening Frida server by using the ‘explore’ command:
C:\>objection explore
___| |_ |_|___ ___| |_|_|___ ___
| . | . | | | -_| _| _| | . | |
|___|___|_| |___|___|_| |_|___|_|_|
|___|(object)inject(ion) v1.2.2
Runtime Mobile Exploration
by: @leonjza from @sensepost
[tab] for command suggestions
com.test.app on (motorola: 7.0) [usb] # android hooking search classes TrustManager
android.security.net.config.RootTrustManager
android.app.trust.ITrustManager$Stub$Proxy
android.app.trust.ITrustManager
android.security.net.config.NetworkSecurityTrustManager
android.security.net.config.RootTrustManagerFactorySpi
android.app.trust.TrustManager
android.app.trust.ITrustManager$Stub
com.android.org.conscrypt.TrustManagerImpl
com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker
com.android.org.conscrypt.TrustManagerImpl$TrustAnchorComparator
com.android.org.conscrypt.TrustManagerFactoryImpl
javax.net.ssl.TrustManagerFactory$1
javax.net.ssl.TrustManager
javax.net.ssl.TrustManagerFactory
javax.net.ssl.X509TrustManager
javax.net.ssl.TrustManagerFactorySpi
javax.net.ssl.X509ExtendedTrustManager
[Ljavax.net.ssl.TrustManager;
Теперь вы можете воспользоваться функцией для обхода технологии SSL pinning:
com.test.app on (motorola: 7.0) [usb] # android sslpinning disable
Job: 2f633f86-f252-4a57-958e-6b46ac8d69d1 — Starting
[6b46ac8d69d1] [android-ssl-pinning-bypass] Custom, Empty TrustManager ready
Job: 2f633f86-f252-4a57-958e-6b46ac8d69d1 – Started
Техника 4 – Реверс-инжиниринг кода верификации сертификата
Возможен такой случай, когда разработчик использует собственные SSL-библиотеки вместо системных для верификации сертификата. В этой ситуации нам нужно распаковать пакет, сконвертировать smali-код в Java-код и найти функции, отвечающие за проверку сертификата.
Если использовать «dex2jar», синтаксис будет следующим:
C:\>d2j-dex2jar.bat «C:\test_app.apk»
dex2jar C:\test_app.apk -> .\test_app-dex2jar.jar
Полученный файл .jar должен быть пригоден для открытия в вашей любимой утилите для исследования Java-приложений (например, JD-GUI).
После того как вы нашли функции, отвечающие за проверку сертификата, можно либо полностью пропатчить код, либо подцепиться к нужной функции при помощи Frida. Чтобы сэкономить время и не пересобирать полностью приложение, эффективнее подцепиться к функциям, отвечающим за проверку сертификата. Шаги, описанные в предыдущей технике, позволят подключиться к приложению, и далее вы можете либо подцепиться к функции при помощи утилит фреймворка Frida, либо при помощи приложения Objection.
Заключение
Техники, описанные в этой статье, позволяют перехватывать SSL-трафик и обходить некоторые наиболее распространенные защиты, используемые разработчиками. Кроме того, я кратко рассказал об утилите Objection и фреймворке Frida. Обход технологии SSL pinning и других защит лишь небольшая часть возможностей, которые позволяют реализовать эти инструменты.
Надеюсь, мне удалось на доступном языке рассказать о техниках, которые могут быть пригодны для оценки безопасности мобильных Android-приложений и демонстрируют важность наличия нескольких способов проведения подобного рода исследований.
Ошибка. Сбой при загрузке Сертификат, использованный для подписи APK-файла, ещё не действителен.
При загрузке приложения выдаёт такую ошибку Сбой при загрузке Сертификат, использованный для подписи APK-файла, ещё не действителен. Используйте действительный сертификат. Дату на 1 день наза переводил — не помогло
Отслеживать
задан 29 авг 2014 в 10:43
3,372 19 19 серебряных знаков 35 35 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Закрывайте вопрос. Моя ошибка была в том, что я думал, что дату надо переводить и создавать приложение, а сертификат был создан ещё со старой датой (Не переведённой). Просто надо было перевести на 1 день назад и создать новый файл ключей, а потом уже подписывать им приложение.
Отслеживать
ответ дан 29 авг 2014 в 10:54
3,372 19 19 серебряных знаков 35 35 бронзовых знаков
- android
- google-play
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.