Рубрики
kali \ virus \ rootkit \ вирусы \ защита

android работа с apk

Необходимые пакеты:

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:

https://developer.android.com/studio

!!! важно, установить в домашний каталог и все остальные утилиты ставить туда
~/android-tools/android-studio

Описание утилит:

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:

~/.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:

Архив ищем тут:
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:

Где взять apk?
Можно из кеша вашего устройства, если приложение установлено.

0. способ:
Где пакет?
adb shell pm path  имя.пакета.приложения

Скачать пакет:
adb pull путь

1. способ:
Можно скачать apk с сайта:
https://apkpure.com

Смотрим apk:

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