Crimson.Lab

Лаборатория Кримсона

22 June 2025

Как изменить функцию в 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