Diciamo che questa cosa non è sempre possibile, anche perchè alcune piattaforme o programmi, possono offuscare appositamente il codice sorgente in modo da renderlo irriconoscibile.
Tuttavia, per qualche app è possibile farlo, soprattutto se si conosce il giusto tool da utilizzare.
In questa breve guida/tutorial, ti spiegherò come decompilare e compilare un file apk, con un software gratuito e relativamente semplice da utilizzare.
Come usare apktool per decompilare e ricompilare un apk
Il software che ti andrò a presentare si chiama apktool e lo puoi scaricare da questo indirizzo:
https://bitbucket.org/iBotPeaches/apktool/downloads/
Quella che devi scaricare è l'ultima versione del programma, che avrà un nome tipo apktool_2-.2.2.jar.
Copia questo file in una cartella del tuo pc, magari dentro programmi/apktool, rinominandolo in apktool.jar.
Sempre all'interno di questa cartella, crea un file.bat chiamato apktool.bat, ed al suo interno mettici queste righe di codice:
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool.jar" %*
Poi già che ci sei, aggiungi apktool tra i path delle variabili d'ambiente (se non sai come fare leggi questo post).
Ora sei pronto per usare apktool.
Quello che puoi fare adesso, è copiare in una nuova cartella il file apk del gioco/app che vuoi decompilare, in modo da avere tutto a portata di mano.
Decompilare un apk con apktool
Ti basta aprire il prompt dei comandi di dos (posizionandoti nella cartella dove hai caricato l'apk) e digitare:apktool d nome-programma.apk
Se tutto sarà andato a buon fine, troverai una nuova cartella con il nome della tua app, dentro la cartella in cui avevi posizionato l'apk da decompilare.
Entrando in questa nuova cartella, troverai tutte le tipiche cartelle ed i file di un progetto java:
- assets (contenente tutte le immagini ed i file dell'app decompilata)
- original
- res
- ecc...
Troverai anche un file chiamato apktool.yml, che presumibilmente serve ad apktool.
Come ricompilare un apk
Dopo la decompilazione, e dopo aver apportato eventuali modifiche al codice sorgente dell'applicazione android appena scompattata, per poter rigenerare un apk funzionante, occorre compilare nuovamente il tutto.Entra dunque nel prompt di dos (posizionandoti nella cartella dove hai caricato l'apk prima) e digita:
apktool b nome-cartella-app
Dove ovviamente nome-cartella-app è il nome della cartella creata prima con la decompilazione.
Ancora una volta, se tutto sarà andato a buon fine, ti basterà entrare nella sottocartella con il nome dell'app, e cercare la cartella chiamata dist, all'interno della quale troverai il tuo bel apk nuovo di zecca.
Bene, è tutto.
Anzi no, in teoria, se non firmi l'apk questo potrebbe non funzionare una volta installato sul tuo telefono, riportando il seguente messaggio: "app non installata, il pacchetto potrebbe essere danneggiato".
Firmare l'apk
Per firmare il file apk appena creato, digitare, sempre da dos, il seguente comando:java -jar signapk.jar certificate.pem key.pk8 nome-programma.apk nuovonome-programma.apk
Si, lo so, ora starai pensando che signapk.jar, certificate.pem e key.pk8, non ce l'hai.
Ebbene, potresti crearli/generarli da solo (leggi questa guida per scoprire come fare), oppure scaricarli da questo link e metterli nella cartella dell'apk da firmare.
Dopo aver completato con successo questa operazione, avrai un nuovo file apk certificato, che potrai caricare ed installare sul tuo telefono senza più alcun problema.
Come dicevo all'inizio del post, apktool non è infallibile, non tutto si può decompilare e compilare di nuovo, tuttavia in molti casi questo software può riuscire davvero a farti ottenere i codici sorgenti di un app android... poi quello che ne vuoi fare non sono solo affari tuoi.
Se da una parte questo post può farti molto felice (ad esempio con questo metodo puoi ottenere tutte le immagini presenti in un app partendo dall'apk), dall'altra parte però dovrebbe farti sorgere qualche dubbio / preoccupazione.
Se hai quindi capito come è facile ottenere un codice sorgente non offuscato, va da sè che non bisogna mai salvare le password in chiaro dentro le proprie app, perchè potrebbero finire nelle mani di qualche malintenzionato.
Lascia un commento!