Содержание статьи
Какое приложение мы будем препарировать? Я выбрал для своих целей VK Admin — программу для управления сообществами «ВКонтакте» со смартфона. В нем не предусмотрена темная тема, поэтому мы с тобой попробуем эту тему добавить.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный изложенным материалом.
Собираем и разбираем
Сначала извлечем все ресурсы приложения, используя утилиту apktool — она распаковывает и запаковывает файлы пакетов APK, которые хранятся в сжатом, бинарном виде, и дизассемблирует программный код, заключенный в них.
Чтобы получить установочный пакет, можно воспользоваться Android Debugging Bridge — системой для отладки программ на устройстве. В *nix-подобных системах ADB ставится стандартно, с помощью пакетного менеджера, а в Windows — идет в составе Android Studio или Android SDK Platform Tools.
В первую очередь установим приложение из Google Play Store на смартфон, подключим его к компьютеру с помощью USB, затем воспользуемся ADB для переноса пакета приложения на компьютер и извлечем его содержимое.
$ adb shell pm path com.vk.admin
package:/data/app/com.vk.admin-Ka5KVtTbnGgxoRqnObb-pQ==/base.apk
$ adb pull /data/app/com.vk.admin-Ka5KVtTbnGgxoRqnObb-pQ==/base.apk com.vk.admin.apk
3881 KB/s (13414132 bytes in 3.374s)
$ apktool d com.vk.admin.apk
I: Using Apktool 2.4.0 on base.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values / XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
После этого мы получим папку com.vk.admin/
, внутри которой хранится все содержимое исходного .apk, только в декодированном виде. Чтобы применить изменения, необходимо будет снова воспользоваться рядом утилит.
Сначала собери приложение обратно в пакет .apk
.
$ apktool b com.vk.admin/
I: Using Apktool 2.4.0
I: Checking whether resources has changed...
I: Checking whether sources has changed...
I: Smaling classes folder into classes.dex...
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk...
Затем необходимо подписать приложение. Это нужно, чтобы и Google Play Store, и устройство не обновляли приложение, если подписи не совпадают. Поэтому не забудь удалить приложение с телефона, прежде чем установить свое, подписанное своим ключом. Для создания подписи в первый раз нужно воспользоваться утилитой keytool (входит в Java Development Kit):
$ keytool -genkey -keyalg RSA -alias xakep -keystore ks.keystore -validity 10000 -keysize 2048
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: Xakep User
What is the two-letter country code for this unit?
[Unknown]: RU
Is CN=Xakep User, C=RU correct?
[no]: yes
Enter key password for
(RETURN if same as keystore password):
Re-enter new password:
Когда ты уже создал ключ, подпиши приложение.
$ jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ks.keystore com.vk.admin.apk xakep
Enter Passphrase for keystore:
jar signed.
После этого установи приложение на телефон.
$ adb install com.vk.admin.apk
3881 KB/s (13414132 bytes in 3.374s)
Success
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»