venerdì 4 agosto 2023

Published agosto 04, 2023 by Django Faiola with 0 comment

APK Downgrade Manuale - Parte 2

 

Introduzione

Nel post APK Downgrade Manuale - Parte 1 è stata mostrata la procedura su come eseguire il downgrade delle applicazioni di terze parti nel caso di singolo package installato sul dispositivo. Come procedere nel caso in cui il package è diviso in più file?

Procedura manuale del downgrade (Bundle/Split)

Dal mio vecchio smartphone (la mia cavia) con Android Nougat proviamo a scalare l'applicazione Deliveroo: consegna di cibo che so per certo è un pacchetto diviso. Vecchia versione utilizzata 2.54.0 precedentemente scaricata e salvata sul computer con il nome del file "com.deliveroo.orderapp.old.apk".

Eseguire il prompt dei comandi.

Lista dei package installati di terze parti

adb shell pm list package -3
package:pedometer.steptracker.calorieburner.stepcounter
package:com.shazam.android
package:com.whatsapp
package:fr.vinted
package:uk.co.novaware.telepass.android
package:com.deliveroo.orderapp
package:com.instagram.android
package:com.twitter.android
package:io.yuka.android
package:com.zhiliaoapp.musically
package:com.topjohnwu.magisk
package:com.glovo
package:com.wallapop
package:com.snapchat.android

Lista path del package com.deliveroo.orderapp

adb shell pm path com.deliveroo.orderapp
package:/data/app/com.deliveroo.orderapp-2/base.apk
package:/data/app/com.deliveroo.orderapp-2/split_config.arm64_v8a.apk
package:/data/app/com.deliveroo.orderapp-2/split_config.it.apk
package:/data/app/com.deliveroo.orderapp-2/split_config.xxhdpi.apk
Come si può vedere l'applicazione deliveroo è divisa in 4 file.

Copia dell'apk originale sulla workstation

adb pull -a /data/app/com.deliveroo.orderapp-2/base.apk
adb pull -a /data/app/com.deliveroo.orderapp-2/split_config.arm64_v8a.apk
adb pull -a /data/app/com.deliveroo.orderapp-2/split_config.it.apk
adb pull -a /data/app/com.deliveroo.orderapp-2/split_config.xxhdpi.apk

Se viene riscontrato un errore del tipo

adb: error: remote object '/data/app/com.deliveroo.orderapp/base.apk' does not exist

allora bisogna creare una copia dei file prima del pull nella cartella tmp.

adb shell cp /data/app/com.deliveroo.orderapp-2/*.apk /data/local/tmp/
adb pull /data/local/tmp/base.apk
adb pull /data/local/tmp/split_config.arm64_v8a.apk
adb pull /data/local/tmp/split_config.it.apk
adb pull /data/local/tmp/split_config.xxhdpi.apk

Disinstallazione dell'app originale dal dispositivo preservando i dati dell'utente

adb shell pm uninstall -k com.deliveroo.orderapp

Riavvio del dispositivo

adb reboot

Downgrade

adb push com.deliveroo.orderapp.old.apk /data/local/tmp/
adb shell pm install /data/local/tmp/com.deliveroo.orderapp.old.apk
adb shell rm /data/local/tmp/com.deliveroo.orderapp.old.apk

Backup

adb backup -f deliveroo.ab -apk -obb -keyvalue com.deliveroo.orderapp

Inserire la password per esempio "1234". Il backup può essere eseguito anche (consigliato) utilizzando direttamente l'utility di backup bu.

Ripristino dell'applicazione originale

Nel caso in cui la copia degli originali sulla workstation è stata eseguita direttamente senza l'ausilio della cartella tmp, ovvero solo tramite una serie di pull,  bisogna creare una copia di questi sul dispositivo.

adb push base.apk /data/local/tmp/
adb push split_config.arm64_v8a.apk /data/local/tmp/
adb push split_config.it.apk /data/local/tmp/
adb push split_config.xxhdpi.apk /data/local/tmp/

Utilizzando i file originali precedentemente copiati nella cartella tmp, per ripristinare l'app originale bisogna creare un nuovo package di installazione come segue:

adb shell pm install-create -r
Success: created install session [800467548]

adb shell pm install-write 800467548 base.apk /data/local/tmp/base.apk
Success: streamed 29701113 bytes

adb shell pm install-write 800467548 split_config.arm64_v8a.apk /data/local/tmp/split_config.arm64_v8a.apk
Success: streamed 21107947 bytes

adb shell pm install-write 800467548 split_config.it.apk /data/local/tmp/split_config.it.apk
Success: streamed 147865 bytes

adb shell pm install-write 800467548 split_config.xxhdpi.apk /data/local/tmp/split_config.xxhdpi.apk
Success: streamed 418214 bytes

adb shell pm install-commit 800467548
Success

Android Backup (.ab)

Il file di backup .ab (Android Backup) è proprietario con magic numbers "ANDROID BACKUP", dati compressi con algoritmo deflate e cifrati con AES CBC se impostata la password di backup. Esistono vari tool per convertire il file .ab in .tar, uno di questi è Android Backup Extractor oppure con il tool integrato in dfAPKdngrader.

0 comments:

Posta un commento