Необходимые пакеты:
1 2 3 |
ubuntu: apt install openjdk-7-jdk openjdk-8-jdk apt install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 |
Android Studio:
1 2 3 4 |
https://developer.android.com/studio !!! важно, установить в домашний каталог и все остальные утилиты ставить туда ~/android-tools/android-studio |
Описание утилит:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
ADB (Android Debug Bridge) - инструмент используемый для отладки устройств на базе Android с использованием соединения USB Apktool - инструмент для распаковки и запаковки APK-файлов Jadx - декомпилятор байт-кода Dalvik в код Java Backsmali - дизассемблер кода Dalvik Sign - инструменты для подписи пакетов apt install adb mc zip cd ~/android-tools #wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.11.0.jar wget https://github.com/skylot/jadx/releases/download/v1.5.1/jadx-1.5.1.zip wget https://github.com/appium-boneyard/sign/releases/download/1.0/sign-1.0.jar wget https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.5.2.jar mkdir jadx && cd jadx unzip ../jadx-1.5.1.zip |
Алиасы для запуска jar:
1 2 3 4 5 6 7 8 |
~/.bashrc alias apktool='java -jar ~/android-tools/apktool_2.11.0.jar' alias baksmali='java -jar ~/android-tools/baksmali-2.5.2.jar' alias sign='java -jar ~/android-tools/sign-1.0.jar' alias jadx='~/android-tools/jadx/bin/jadx-gui' alias javac='javac -classpath ~/android-tools/android-sdk-linux/platforms/android-2.9/android.jar' alias dx='~/android-tools/android-sdk-linux/build-tools/29.0.1/dx' |
Установка Abdroid-studio linux:
1 2 3 4 5 6 7 |
Архив ищем тут: https://developer.android.com/studio#downloads Установка пакетов: apt install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 cd ~/android-studio/bin bash studio.sh |
Вскрываем APK:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Где взять apk? Можно из кеша вашего устройства, если приложение установлено. 0. способ: Где пакет? adb shell pm path имя.пакета.приложения Скачать пакет: adb pull путь 1. способ: Можно скачать apk с сайта: https://apkpure.com |
Смотрим apk:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
APK-файл - это всего лишь ZIP-архив В APK-файле четко задана структура файлов и каталогов. cd ~/Downloads unzip app.apk res - каталог всевозможных ресурсов mipmap - иконки values - строк drawable - изображения layout - разметка интерфейса (можно легко изменить интерфейс приложения XML-файла разметки) classes.dex - байт-код приложения / в одном dex-файле может быть не более 65535 файлов AndroidManifest.xml - файл манифеста - описывает структуру приложения - активности, службы и т.д. Все XML-файлы хранятся в бинарном виде, для их изменения их нужно разжать. После распаковки APK-файла запустите приложение jadx-gui и откройте в нем app.apk Собственно тут можно будет увидеть исходный код программы. ( в поиске можно поискать слова billing, bill, isBill() и т.д. ) Для внесения изменений в программу на понадобится программа apktool для распаковки программы. apktool -d -r app.apk cd app После изменения приложения нам необходимо через компилятор и дизассемблер (dx) java MyBill.java ~/android-tools/android-sdk-linux/build-tools/<версия>/dx --dex --output=MyBill.dex MyBill.class backsmail MyBill.dex Собираем пакет: apktool b application Пакет будет создан в каталоге "application/dist" Переименовываем его: mv application/dist/app.apk apk-hack.apk Подписываем пакет: sign app-hack.apk P.S. Самый простой способ распаковать приложение это использовать apktool Распоковать: java -jar apktool.jar d myapp.apk Собрать: java -jar apktool.jar b myapp Подписать: sign myapp.apk |