Come avrete capito sono molto interessato e appassionato di tutto ciò che riguarda il mondo Android. Passando in rassegna il market e testando applicazioni mi è capitato spesso di pensare a come avrei voluto cambiare alcuni particolari (grafici e non) dei programmi installati. Se è capitato anche a voi seguite questa guida, oggi vi spiego come decompilare e modificare i file “apk”. Partiamo con il download di tutti gli strumenti che ci serviranno.

Strumenti necessari:

  1. JDK (Java Development Kit). Se non lo avete potete scaricarlo da QUI.
  2. Apktool. Dalla colonna di download di sinistra poi scegliete il file “apktool-install…” adatto al vostro sistema operativo. E’ il tool che useremo per decompilare e ricompilare i file.
  3. signapk. E’ un programma che inserisce la firma digitale nel pacchetto creato con apktool. Non è sempre necessario, ma nel dubbio conviene usarlo.

Istruzioni:

Per prima cosa scaricate tutto il necessario e installate il JDK. Poi decomprimete gli archivi corrispondenti ad apktool e mettete i 3 file così ottenuti (uno di nome “aapt” e due “apktool”) in una cartella debitamente nominata. Che so: C:\Apktool (per Windows) /vostroutente/Apktool/ (per Linux). Io consiglio di decomprimere i file all’interno del pacchetto “Signapk” nella stessa cartella. Se avete installato anche l’SDK di Android potete copiare tutto nella cartella “tools”. A questo punto, per gli utenti Windows serve un ulteriore passaggio: inserire nel path la cartella del java.

  1. Fate clic con il pulsante destro del mouse su Risorse del computer e scegliere Proprietà
  2. Andate a Avanzate.
  3. Fate clic sul bottone Variabili d’ambiente. Apparirà una scheda contenente due aree: Variabili di sistema e Variabili dell’utente.
  4. Nella sezione Variabili dell’utente, controllate se c’è una variabile PATH già definita (potreste dover far scorrere quella parte della finestra). Se non c’è, saltate al passo 7.
  5. Fate clic sulla variabile PATH. Compariranno PATH nel campo Variabile e la configurazione attuale di path nel campo Valore nella parte bassa della finestra.
  6. Fate doppio clic nel campo Valore e utilizzate il tasto freccia a destra per portarvi alla fine del testo contenuto in tale campo. Digitate il percorso completo in cui è stato installato Java, più la cartella bin.
    Importante per Windows Vista! La cartella “Programmi” viene vista nel prompt come “Program Files”, quindi va utilizzato questo nome nella variabile d’ambiente.Ad esempio, se java è stato installato dentro la cartella C:\Programmi\Java\jdk1.6.0, scrivere
    C:\Programmi\Java\jdk1.6.0\bin (Windows XP/2000)
    C:\Program Files\Java\jdk1.6.0\bin
    (Windows Vista)
    (NOTA 1: se la vostra directory di installazione è diversa, inserite il vostro valore)
    (NOTA 2: Fate attenzione a inserire un punto e virgola alla fine del valore corrente)
    Il punto e virgola è richiesto solo se non ce n’è già uno.
  7. Se la variabile PATH non è definita, fate clic su Nuovo nella parte bassa della finestra. Fate clic sul campo Nome Variabile e digitate
                PATH
  8. Fate clic nel campo Valore e digitate il percorso completo in cui è stato installato Java, più la cartella bin.
    Importante per Windows Vista! La cartella “Programmi” viene vista nel prompt come “Program Files”, quindi va cambiato il nome di questa cartella nella variabile d’ambiente.Ad esempio, se java è stato installato dentro la cartella C:\Programmi\Java\jdk1.6.0, scrivere
    C:\Programmi\Java\jdk1.6.0\bin (windows XP/2000)
    C:\Program Files\Java\jdk1.6.0\bin(Windows Vista)Premete OK per chiudere la finestra Modifica variabili di sistema.

Ora siamo pronti ad agire. Posizionate il file apk che avete scelto di elaborare nella cartella in cui avete copiato tutti i file. Per semplicità, da qui in poi, chiamerò “Apktool” la cartella e “programma.apk” l’applicazione di test, voi sostituite i nome delle vostre  scelte nelle istruzioni. Aprite il prompt dei comandi, o il terminale, ed entrate nella cartella. Per non appesantire troppo la guida darò per scontato che sappiate muovervi nel sistema tramite riga di comando. A questo punto digitare:

  • Da Windows: apktool d programma.apk programma
  • Da Linux: ./apktool d programma.apk programma

Se tutto è andato bene dovreste aver ottenuto una nuova cartella “programma” in “Apktool” contenente i sorgenti del programma scelto per la “vivisezione”. A questo punto potete navigare tranquillamente al suo interno e studiare un po’ come sono fatte le app che tanto amate. Per le piccole modifiche posso dirvi che nelle cartelle “res/drawable-*” potrete trovare gli elementi grafici da modificare e nel file “dimens.xml” all’interno di “res/values” i parametri di dimensionamento dei componenti. Il resto divertitevi a scoprirlo per conto vostro…

Una volta completate le modifiche che volete, dovrete ricompilare il programma. E’ molto semplice. Ripercorrendo i passaggi precedenti arrivate a digitare:

  • Da Windows: apktool b programma programma-nuovo.apk
  • Da Linux: ./apktool b programma programma-nuovo.apk

Otterrete così un nuovo file apk di nome “programma-nuovo”. Limitandosi a digitare “apktool” avrete un elenco degli altri comandi possibili. Studiateli!

L’ultimo passo è inserire la firma digitale nel nuovo apk. Sempre da riga di comando e dalla cartella Apktool:

  • java -jar signapk.jar certificate.pem key.pk8 programma-nuovo.apk programma-nuovo-sign.apk

Dovrebbe essere tutto pronto all’installazione. Provate a passare l’app così ottenuta nel vostro telefono e ad installarla. Nel caso qualcosa non vada per il verso giusto ricontrollate bene tutti i passaggi fin qui descritti. In caso di necessità potete contattarci tramite i commenti.

Comments

  1. mi potresti fare una breve guida su come muovermi nel cmd?
    non ho capito sl questo passaggio:
    “Ora siamo pronti ad agire. Posizionate il file apk che avete scelto di elaborare nella cartella in cui avete copiato tutti i file. Per semplicità, da qui in poi, chiamerò “Apktool” la cartella e “programma.apk” l’applicazione di test, voi sostituite i nome delle vostre scelte nelle istruzioni. Aprite il prompt dei comandi, o il terminale, ed entrate nella cartella. Per non appesantire troppo la guida darò per scontato che sappiate muovervi nel sistema tramite riga di comando. A questo punto digitare:

    Da Windows: apktool d programma.apk programma”

  2. Per quanto riguarda il passaggio da te evidenziato: mettiamo il caso che tu abbia l’app “programma.apk” da modificare. Tramite il classico drag&drop puoi posizionarlo dove ti fa più comodo per poi modificarlo. Mettiamo che tu l’abbia inserito nella cartella “apktool” al percorso: c:\Programmi\apktool. Ok? All’interno di questa cartella, oltre ai files necessari al funzionamento del tool, ora c’è anche il tuo programma. Una volta aperto il prompt sarai posto di fronte ad una schermata con un semplice “c:\Users\Tuonome”. A questo punto, per iniziare a lavorare sul tuo file, dovrai entrare in apktool. Come fare? Digita “cd Programmi\apktool”. Nella riga successiva del prompt dovresti avere: “c:\Programmi\apktool”. Digitando “dir” avrai la lista di tutti i files presenti al suo interno. Da qui in poi, puoi tornare a seguire la guida passo a passo. Ancora più in generale, per muoversi all’interno del PC tramite cmd si usa sempre il comando “cd”. “cd esempio” ti farà entrare in una cartella con titolo esempio. Per uscirne “cd..”. Per cambiare unità di lavoro si scrive semplicemente la lettera seguita da due punti: “d:”, per esempio. Non posso spiegare tutto in un commento, e i comandi dos sono troppi e troppo elaborati per un articolo. Conviene sempre far riferimento a Google. Con le poche nozioni che ti ho lasciato dovresti essere in grado di fare i primi passi comunque.

  3. Ciao , non mi è chiara una cosa: se apktool sta per la cartella nella quale abbiamo l’occorrente, la lettera “d” da digitare nel comando cos’è? ho sempre l’errore: comando non valido.
    grazie mille

    Marcello

  4. La “d” al seguito del comando apktool serve a decodificare il programma. Praticamente d = decode. Per ricostruire un’app si usa la b, infatti: b = build.

  5. Ciao!
    Ho seguito tutti i passaggi della vostra guida senza incontrare alcun problema, il mio intento sarebbe quello di modificare l’applicazione Mms.apk.
    Il problema è che, una volta che cerco di installare la mia applicazione modificata, non mi risulta possibile farlo. Sia che cerchi di installarla cliccandoci sopra, sia che la metta tramite root explorer in /system/app, non posso farlo!
    Una volta decompilata, modifico i file colors.xml e drawables.xml che si trovano in /res/values, per modificare i colori di sfondo.

  6. Ho capito che modificare i file in /res/values, implichi dover modificare anche frameworks-res.apk, allora mi sono limitata a modificare il file listitem_background.xml in /res/drawable/, ma il risultato è lo stesso di prima, non riesco ad installare l’applicazione. Premetto che imposto i permessi del pacchetto 644, come per le altre applicazioni in /system/app e che ho provato sia dopo aver signato l’apk che no.

  7. Ciao a tutti. Vedo che questa pagina è molto vecchia, spero qualcuno mi possa aiutare!
    Poiché non so programmare, ho seguito tutti i passi, il file apk si è decodificato, e per provare se tutto funziona ho provato a ricrearlo, ma mi escono una sfilza di errori nel prompt…
    Qualcuno mi sa aiutare?
    Grazie

  8. Scusate il ritardo.
    @bricius: Non sapendo quali siano i tuoi messaggi di errore mi è difficile dart una mano, mi spiace.
    @Bianca: devi caricare il framework del tuo telefono in akptool per modificare le applicazioni di sistema. Per farlo estrai il framework e, una volta posizionato nella cartella di apktool, dai il comando: “apktool if com.htc.resources.apk” (questo esempio è fatto con un htc, ovviamente tu cambia la riga a seconda del tuo). C’è la pagina di documentazione sul sito ufficiale comunque: http://code.google.com/p/android-apktool/wiki/FrameworkFiles.
    Altra cosa, prova a non signare le applicazioni di sistema.

  9. salve quando digito nel promt “apktool d programma.apk programma” (ovviamente sostuisco i nomi) mi da un lungo messaggio di errore e non mi crea la cartella come mai?

  10. Purtroppo senza sapere quale sia il messaggio di errore è difficile offrire supporto, mi spiace.

  11. salve so che è un topic vecchio ma vorrei sapere se qualcuno di voi puo dirmi in quale file posso trovare la stringa dei soldi e dei diamanti in campus life!!! grazie in anticipo

  12. salve volevo sapere perchè quando scrivo la stringa “apktool b programma programma-nuovo.apk” ovviamente modificata con il nome dei miei file appare questo errore:
    Error occurred during initialization of VM unable to load native library:can’t find dependent libraries.
    che cosa vuol dire?? grazie tante 🙂

  13. scusate tanto ho sbagliato a scrivere la stringa è “apktool d programma.apk programma” non quello scritto nell’altro messaggio :)scusate ancora

  14. guida perfettamente funzionante 🙂 complimenti all’autore

    adesso una piccola domanda…
    sono riuscito a creare la cartella “programma” con i file dell’ apk adesso vorrei sapere se esistono programmi per modificarle completamente o comunque di più rispetto alla modifica dei file .xml e pochi altri… per esempio andare a leggere i centinaia di file (nel mio apk) che sono presenti in programma\assets\bin\data\ questa cartella nel mio caso pesa più di 100MB quindi molte informazioni interessanti da scoprire e modificare…

    grazie per le future risposte qualunque esse siano 🙂

  15. Ciao
    ho effettuato tutti i passaggi me sicuramente ho sbagliatto qualcosa, dopo aver digitato “apktool d programma.apk programma” ho:
    Error: Unable to access jarfile C:\Apktool\\apktool.Jar

    dove ho sbagliato

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *