venerdì 22 febbraio 2013

Decompilare un APK

Ebbene si', ho perso i sorgenti di un mio programma (nello specifico Well DrawDown Test)
Purtroppo ho formattato il portatile e non mi sono accorto che il progetto non risiedeva in "workspace" (la directory di default per i progetti di Eclipse) ed ho perso il sorgente del progetto


Pero' ho ancora l'apk (o meglio e' ancora sul Play Store)
Per recuperare il codice ho proceduto cosi'

Si mette in una directory il file .apk e lo si rinomina in .zip, a questo punto di decomprime come un normale zip e si ottiene quanto segue

a questo punto si scarica il programma dex2jar e si esegue
dex2jar classes.dex

e' arrivato quindi il momento di decompilare il codice con java decompiler 
si scompatta il pacchetto e si esegui
jd-gui

si apre quindi il file classes.dex.dex2jar e come per magia si ha il codice sorgente 


non e' esattamente come lo ho scritto io perche' alcune variabili sono diventate identificativi numerici ma e' decisamente leggibile
A questo punto rimangono da estrarre i file xml utilizzando il programma apktool
Si digita 
apktool d nome_file.apk nome_file

verra' generata una sottodirectory in cui sono contenuti tutti i file xml e il contenuto della directory /res