Как изменить функцию в Android apk файле
Для начала нужно достать установленный apk с помощью APK Extractor
Потом изучаем содержимое apk файла, поможет в этом jadx
Далее распаковываем apk файл (это zip архив) и находим classes.dex
Это уже не просто скомпилированные классы .class, а Dalvik Executable, который содержит байт-код, скомпилированный из исходного кода Java или Kotlin приложения.
Его нужно декомпилировать с помощью baksmali
java -jar baksmali.jar d classes.dex -o smali_out
Потом находим нужную функцию, и… она имеет совершенно другой вид.
Например функция java
private boolean IsChangeMe() {
return true;
}
А вот так smali
.method private final IsChangeMe()Z
.registers 2
const/4 v0, 0x1
return v0
.end method
Но нам не надо писать сложную логику, достаточно вернуть true
Теперь пришло время пересобрать classes.dex и запихать его в apk
java -jar smali.jar a smali_out -o classes.dex
Не забыть подписать получившийся apk с помощью uber-apk-signer
java -jar uber-apk-signer.jar --apks patched.apk
Осталось переустановить приложение на Android, скорее всего придётся удалить оргинальное приложение, т.к. новая подпись.
tags: android - apk - dex - hack