Guida Android reversing - Apktool

Stato
Discussione chiusa ad ulteriori risposte.

Blitzkiller

Utente Gold
7 Novembre 2013
454
60
159
349
Ultima modifica da un moderatore:
Partendo dal presupposto che dobbiamo avere già un minimo di conoscenze su Android sul modding e soprattutto è necessario avere tutti i pacchetti java installati correttamente sul nostro pc.

Questa è una panoramica e un introduzione ad Apktool. Cos'è Apktool? Apktool è un disassemblatore di pacchetti Android, gli apk. Una volta scaricati jdk e tutte le librerie necessarie, non avere tutti questi file comporta frequentemente degli errori, possiamo creare una cartella che conterrà tutti i file. Normalmente gli apk sono degli archivi che contengono i file dex e i file xml, questi file una volta compilati non possono sono leggibili. Si ha la necessità di decompilare i file per poter visualizzare il codice contenuto in essi e renderli quindi in forma leggibile.

Operazioni preliminari alla decompilazione/compilazione dei file
Sono necessari tre apk per poter procedere;
-framework-res.apk
-SystemUI.apk
-twframework-res.apk

Da riga di comando scrivere:

Codice:
apktool if {path}\framework-res.apk
dove path è il percorso della cartella dove vogliamo piazzare il file, la console ci darà una stampa a video del risultato che sarà di questo tipo

Codice:
I: Framework installed to: {path}\1.apk
[/COLOR]
dove path sarà il percorso che abbiamo scelto in precedenza

stessa cosa va ripetuta per SystemUI.apk e
twframework-res.apk

ora saremmo in grado di compilare/decompilare i nostri file

Comandi

Per decompilare un file dovremmo dare da console il seguente comando:
Codice:
apktool d {path apk da decompilare}\{nomefile.apk} {path della cartella contenente i file decompilati}

Ora prestiamo un attimo attenzione ad una cosa apktool contiene anche smali e baksmali quindi, se abbiamo fatto tutto in maniera corretta, vedremo che nella console dei risultati tipo:

Codice:
{path}>apktool d
Codice:
[COLOR=#333333]{path apk da decompilare}\{nomefile.apk} {path della cartella contenente i file decompilati}
[/COLOR][COLOR=#333333]I: Baksmaling...
I: Loading resurce table....
I: Loaded.
I: Loading resurce table from file [/COLOR][COLOR=#333333]{path}\1.apk
[/COLOR][COLOR=#333333]I: Loaded.
I: Decoding file-resurces...
I: Decoding values*/* XMLs...
I: Done.
I: Copyng assets and libs...
[/COLOR]

Una volta modificati i file sarà necessario ricompilarli e per farlo dobbiamo dare da console il comando:

Codice:
apktool b {path apk decompilato}
Codice:
[COLOR=#333333]{path destinazione file che verrà compilato}\{nomenuovofile.apk}[/COLOR]


se ancora una volta tutto il processo è andato a buon fine leggeremo:

Codice:
[COLOR=#333333]{path}>[/COLOR][COLOR=#333333]apktool b {path apk decompilato} [/COLOR][COLOR=#333333]{path destinazione file che verrà compilato}\{nomenuovofile.apk}
I:Checking whether sources has changed...
I:Smaling...
[/COLOR][COLOR=#333333]I:Checking whether sources has changed...
[/COLOR][COLOR=#333333]I:Building resurces...
I:Building apk file...
[/COLOR]

Registrazione apk
Per registra un apk è necessario avere SignApk
Cosa basilare non registrare mai apk di sistema se non sappiamo cosa stiamo facendo.

tramite console ci spostiamo nella cartella contenente SignApk e diamo il seguente comando:
Codice:
Codice:
[COLOR=#333333]java -jar signapk.jar certificate.pem key.pk8 {path apk da registrare} {path apk registrata}
[/COLOR]



Attenzione
I file APK contengono del codice che è proprietà intellettuale de* suo/i sviluppatori.
Quindi è vietato postare APK o singole porzioni di codice, perché sono protetti da diritto d'autore.
 
Stato
Discussione chiusa ad ulteriori risposte.