Recentemente, abbiamo pubblicato una guida su come aggiungere dipendenze solo per prodotti specifici. Dopo aver implementato i passaggi necessari, abbiamo voluto fare in modo che la finale .apk in realtà non contiene più classi indesiderate. In questo post, ti mostreremo come verificare quali classi e risorse sono in un apk.
Nota: questa guida è stata progettata per decompilare il proprio apk, e non il duro lavoro di altri sviluppatori. Pertanto, non abbiamo incluso alcun passaggio per decodificare o aggirare l’offuscamento del codice.
Preparazione: Installazione degli strumenti
Un apk Android è fondamentalmente una directory zippata, che contiene alcune risorse grezze (immagini, file di layout, ..) e un file classes.dex
. Questo file contiene tutto il codice reale e ci interessa di più. Scarichiamo tutti gli strumenti di cui abbiamo bisogno:
- Dovrai decomprimere l’apk. È possibile utilizzare sia la funzionalità integrata del sistema operativo, o installare il vostro preferito (un)archiviatore come 7-Zip.
- Per invertire il file
classes.dex
in un.jar
, è necessario scaricare lo strumento dex2jar. - Infine, per rendere il file
.jar
leggibile per l’occhio umano, scaricare ed eseguire JD-Gui.
Ottenere il codice indietro
Va bene, ora è il momento di fare il lavoro vero e proprio. Copia il tuo file apk in una directory in cui vuoi lavorare. Decomprimere l’apk utilizzando lo strumento di vostra scelta e si dovrebbe ottenere una directory con un paio di sottodirectory e un paio di file.
Sentitevi liberi di sfogliare ilAndroidManifest.xml
o ilres
directory. Il pezzo più interessante è classes.dex
. Quindi, passa allo strumento dex2jar
scaricato e apri un nuovo terminale.
Se sei su Mac OS, esegui sh d2j-dex2jar.sh -f -o output.jar your_app_input.apk
. Gli utenti Windows possono utilizzare il file.bat
per creare il file.jar
. Una volta eseguito lo strumento, passare al nuovo file .jar
.
Visualizzazione del codice decompilato
Infine, avviare lo strumento scaricatoJD-GUI
e utilizzarlo per aprire il file.jar
.
È possibile sfogliare tutti i pacchetti e le classi, che sono nel vostro apk. Il codice è una versione spogliata e non contiene commenti o strutture ridondanti che stai vedendo nel tuo IDE. Ricorda, questa è la minimizzazione compilata della tua app. Tuttavia, si dovrebbe dare abbastanza informazioni per conoscere le basi della app. Ad esempio, ci ha aiutato a verificare che non ci siano più pacchetti relativi alla libreria admob nell’app.
Altre opzioni
Se hai solo bisogno di una rapida decompilazione, puoi utilizzare lo strumento online all’indirizzo www.decompileandroid.com/.
Per scopi di decompilazione più avanzati puoi dare un’occhiata ad apktool, che offre molti aiutanti aggiuntivi.