Bentornati.
In questa sezione, diamo uno sguardo all'applicazione di compilazione e lettura e proseguiamo direttamente da dove
ci siamo fermati nel video precedente.
Ora entriamo nello strumento APK per iniziare la compilazione di questa applicazione Android.
Il primo passo è stato fatto.
Abbiamo scaricato questo file, ma ora vogliamo decompilarlo.
Quindi apro Google Chrome e dico semplicemente apk to download.
E la prima è quella corretta.
Le immagini dell'iPod su github i io.
Ed ecco la versione attuale.
E dopo aver fatto clic su questo, verrà scaricato direttamente, come potete vedere qui e ora dice, oh, questo
potrebbe essere un file pericoloso perché il file char viene trattato come un file binario.
E sì, questo file non è affidabile per il sistema.
Mi fido di questa applicazione.
Quindi ho detto: "Ok, tieni questo".
E ora abbiamo nella directory dei download questo strumento APK proprio qui, possiamo aprire un nuovo terminale
e dire semplicemente Java dash char ed eseguire questo strumento APK, ottenendo così questo prompt.
Ma ora vogliamo inserire questo strumento APK in una directory di strumenti che abbiamo impostato in modo pulito e vogliamo
anche generare un nome alias.
Ci arriverò tra un attimo.
Quindi ripuliamo un po' questo sistema.
Copiamo e incolliamo il tutto in tunes.
Creiamo una nuova directory denominata APK Tool e la incolliamo qui.
Quindi, se vogliamo eseguire questo strumento APK, dobbiamo fornire l'intero percorso.
Apro un nuovo terminale e ve lo mostro.
Quindi dovrei digitare ogni volta home app tools epic tool apk tool top e char.
Se vogliamo eseguire questa operazione e sono davvero troppo pigro per scrivere tutto questo tempo.
Quindi stiamo creando una scorciatoia in nome alias che, quando digitiamo questo nome alias proprio qui
e questo prompt qui, l'intero comando viene eseguito e questo nome alias deve essere noto alla
nostra bash.
RC o set è HRC, perché questi sono i file di configurazione del nostro terminale.
Dipende da cosa si sta utilizzando.
Vi mostrerò quindi come fare per entrambi.
Perché allora dovreste farlo.
Perché allora dovrebbe andar bene così.
Lo apro, ha aggiunto, perché è più comodo per alcuni utenti grafici.
Pertanto eseguo bash RC proprio qui.
Quindi digitiamo Alias e diamo a questo alias il nome di strumento APK.
Quindi questa è la nostra variabile, diciamo così o il nostro nome.
Quando digitiamo APK Tool, possiamo dire di eseguire l'intero comando proprio qui e poi semplicemente salvarlo.
E ora aprirò il servizio HRC perché sto usando l'età della città allo stesso modo.
E salviamo questo.
Potete anche fare clic su Salva qui.
O semplicemente premere control.
Lasciate che.
Ora vogliamo eseguire questo strumento APK.
Ma il comando non viene trovato.
Perché?
Perché questo file di configurazione viene caricato all'avvio del terminale.
Abbiamo quindi modificato questo file in seguito.
Possiamo chiudere questo terminale e aprirne uno nuovo.
Oppure possiamo usare la fonte.
Ma ci ha impostato l'HRC e ora questo file di configurazione viene aggiornato nel nostro terminale.
Ora è disponibile questo strumento APK.
Guardate le opzioni dello strumento APK.
Quindi le opzioni principali sono EPC da lasciare per Decode.
Di tanto in tanto dirò anche compilato, ma intendo esattamente lo stesso e possiamo decodificare
o decompilare un file APK lì.
È un'operazione simile alla decompressione, ma con caratteristiche aggiuntive.
L'altra opzione è che l'APK sia per la compilazione e che si possa ricostruire un percorso di app.
Quindi, dopo la compilazione dell'applicazione, otteniamo una nuova struttura di directory e possiamo ricostruire
questa struttura di directory in un'applicazione mobile.
Pertanto, è possibile modificare questa struttura di directory.
Va bene.
Altre opzioni utili.
Opzioni utili.
Mi dispiace è il trattino anticipo perché questo elenco ancora più opportunità dello strumento APK.
Ora abbiamo un mucchio di opzioni e questo è ciò che lo strumento APK è in grado di fare.
Ci concentriamo quindi solo su quelle più importanti, perché le cose da fare sono tante e di tanto in tanto servono
altre opzioni.
Ma questo lo impareremo durante il corso.
Quindi sì, concentriamoci sulla parte principale.
Un'opzione importante è questa qui, il cruscotto.
Ah, il che significa non decodificare le risorse.
Le risorse sono, per esempio, la CA delle risorse che contiene alcune stringhe, collari e cose del
genere, ma anche l'esempio del manifest di Android conta come risorsa.
Ora si potrebbe pensare: "Aspetta, perché non dovrei decompilare o decodificare questo esempio di manifest di Android?
Perché dopo si ottiene un bel file di testo semplice XML.
La risposta è che esistono alcuni tipi di meccanismi di compilazione, ad esempio, e lo sviluppatore
può inserire alcuni caratteri davvero strani in queste risorse e la funzionalità dell'applicazione non ne risente.
Quindi l'app funziona perfettamente.
Ma se uno strumento APK, ad esempio, cerca di decompilare questi strani file di risorse, fallisce perché
il parser viene sopraffatto o confuso e l'intero processo si avvia.
In questo caso, l'attaccante potrebbe essere interessato solo a modificare il codice sorgente.
Questo modificato, ad esempio, e non si preoccupa nemmeno di queste risorse.
Si tratta quindi di questo parametro.
Quindi con il parametro dash non decompiliamo questi file di risorse, ma non decodificare l'android manifest
xml potrebbe essere davvero un male perché questo file è un importante file di configurazione e dobbiamo modificarlo
per aggiungere alcuni permessi o renderlo possibile, per impostare il parametro di backup o cose del genere.
Per questo gli sviluppatori di questo strumento APK hanno una risposta anche per questo.
Quindi abbiamo qui il cruscotto.
Ah, non decodificare le risorse, ma abbiamo anche questo falso parametro manifest proprio qui.
Ciò significa che anche se lo strumento APK non decodifica tali risorse, cerca comunque di decodificare il manifest
XML di Android per poterlo modificare e visualizzare.
Abbiamo anche la controparte relativa alle fonti proprio qui.
Quindi, se siamo interessati a modificare il manifest di Android e abbiamo qualche problema con il codice sorgente,
in questo caso il file di testo dell'archivio delle classi, possiamo dire: "Ok, decodifica semplicemente le risorse e non preoccuparti
di questi sorgenti".
Ok?
Queste tre opzioni sono quindi molto importanti.
E sì, queste sono le opzioni principali che vengono utilizzate la maggior parte delle volte e che mi hanno salvato la giornata molte
volte.
Iniziamo quindi a compilare l'applicazione in questo momento e poi confrontiamola con la versione iniziale
e compilata con l'APK.
Pertanto, vado in Epps Space Pang e decompilo.
Già.
Qui si trova il deposito epico di base.
Quindi ora eseguo un PK due DD per Decode.
Beh, come ho detto, decompilo e fornisco l'apk di base.
Qui possiamo vedere la decodifica di Android Manifest XML con risorse e altre cose.
E ora abbiamo una nuova directory proprio qui.
Spazio dei nomi.
Ora lo apro in un browser di file.
Questa struttura è molto simile a quella che abbiamo visto decomprimendo un'applicazione.
Mettiamoli quindi fianco a fianco e confrontiamoli tra loro.
Diamo un'occhiata a ciò che è identico, e poi possiamo concentrarci solo sulla differenza tra Unzipping
e lo strumento APK.
Va bene.
Identica è la directory delle risorse e quella delle labbra.
Non c'è nulla di diverso tra i due.
Il meccanismo di compilazione e decompressione.
La directory originale contiene il meta INF e il manifest XML originale di Android.
Quindi anche questi sono identici, ma solo con una struttura diversa.
Poi abbiamo la directory di riposo e anche questa è identica.
Oltre al caso in cui si ottengano le risorse RC, queste vengono compilate in una nuova cartella denominata values.
Questo qui.
Qui abbiamo i file XML in chiaro, abbiamo queste stringhe legate e sì.
XML pubblico.
Queste sono le risorse, AC.
Poi abbiamo la directory become e la directory become è all'interno della directory unknown, proprio qui.
Quindi anche identico.
E ora non è rimasto molto.
Abbiamo tagliato queste classi in un file di testo.
E cosa fa la parte corrispondente di questo file?
Ora abbiamo una nuova directory chiamata Smiley.
E se aprite questa, abbiamo molte sottodirectory.
Questa nuova cartella, Smiley, contiene le classi, il testo e le classi.
Il testo contiene il codice sorgente Java.
Ecco quindi il nostro codice sorgente Java.
Ma in che tipo di formato?
Beh, lo si potrebbe intuire anche dal nome.
Abbiamo alcuni file di smiley proprio qui.
E permettetemi di aprirne uno per mostrarvelo.
Qui, per esempio, abbiamo il comportamento alieno, Todd Smiley, e qui possiamo vedere, oh, beh, questo
non sembra ancora così buono.
Sembra una schifezza di montaggio.
Sì, è così.
Ma non abbiamo i riferimenti negativi che avevamo in quelle classi, in quel file di testo.
Inoltre, qui abbiamo una sola classe.
Quindi il sistema di comportamento alieno Dot Smiley è una singola classe Java.
Questo rende molto più facile il reverse engineering dell'intera applicazione, perché non dobbiamo
scavare in un mucchio di file binari.
Possiamo semplicemente scegliere ciò che ci interessa.
E se scorro verso il basso, sì, possiamo vedere la parte sorridente.
E alla fine di questo corso capirete cosa c'è qui dentro.
Potete leggere direttamente quello che succede qui e potete anche modificarlo, il che è straordinario.
E se non mi credete, aggrappatevi a questo corso e ce la faremo insieme.
Per ora ci atteniamo alla parte in cui il testo della classe viene compilato in singoli file smiley, che
sono singoli annunci.
È rimasto solo un file, l'XML di Android Manifest, questo qui.
Ora possiamo vedere cosa abbiamo, un testo XML semplice, che possiamo leggere direttamente.
Possiamo modificarlo qui, ad esempio possiamo vedere che utilizza l'autorizzazione di Android per la vibrazione.
Quindi, se si installa su un dispositivo reale, lo smartphone vibra quando il giocatore viene colpito.
Ora siamo in grado di modificare questo esempio di manifest Android e quello che faremo ora è aggiungere un'ulteriore autorizzazione,
aggiungendo l'autorizzazione al contesto nell'esempio di manifest Android, perché ogni applicazione ha bisogno
di accedere ai contatti, anche se si tratta solo di una torcia, di un gioco di passaggio o altro.
Quindi anche questo gioco dovrebbe avere la possibilità di accedere ai contatti.
Come possiamo farlo?
Nella prossima sezione scopriremo le autorizzazioni dell'esempio di manifest di Android.
Ma sì, lasciate che ve lo mostri velocemente perché non è così difficile.
Lo apro in un editor grafico.
Lasciatemi scegliere.
Questo qui.
Va bene.
Qui abbiamo i permessi degli utenti e il nome dell'Android.
Ora non siamo sviluppatori.
Non abbiamo idea di quale sia l'autorizzazione del contesto.
Apriamo quindi Google.
Cerco Android, leggo i contatti, manifesto l'autorizzazione XML e la documentazione ufficiale sarebbe
più affidabile.
Ma io rimango fedele a StackOverflow.
E poi scorriamo verso il basso e questo sembra buono.
Quindi copio e incollo questo.
E aggiungiamo questo qui.
Va bene.
Abbiamo modificato un nuovo permesso.
Naturalmente, possiamo anche inserire il nostro codice per accedere a questi contatti e inviarli al nostro server.
Impareremo a farlo, ma non ora.
Ora ci stiamo concentrando solo sulla parte giornaliera, di compilazione e di costruzione.
Ok.
Dobbiamo costruire di nuovo questa app.
Pertanto, entro nel nostro terminale.
Ed eccoci nello spazio della directory di decompilazione, dove abbiamo l'apk di base e la versione
decompilata o decodificata.
Ora eseguo lo strumento APK B per la compilazione e ora ho fatto questo errore così spesso.
Spesso si ottiene questo errore e questo è il caso perché dobbiamo ricostruire questo percorso dell'app, questa directory,
non l'APK.
Pertanto, si prega di fornire qui il percorso e forse con la barra e poi si è a posto.
Ora stiamo ricostruendo tutti i file memorizzati nella directory e anche il nostro manifest XML
di Android modificato in un nuovo APK e ci dice che la compilazione è stata completata.
Abbiamo un nuovo APK.
Controlliamo.
Qui abbiamo una nuova directory denominata list e qui abbiamo il nostro nuovo APK.
Questo è il nostro nuovo APK costruito per la prima volta.
Non possiamo installarlo in questo momento.
Vi mostrerò questo.
Quindi mi collego rapidamente al macchinario ed eseguo l'installazione ADB, ottenendo l'errore che l'applicazione non è ancora
stata firmata.
Impareremo a conoscere la firma più avanti, ma per ora abbiamo ricostruito questo APK ed è anche una versione modificata.
Lo verificheremo dopo aver firmato questa applicazione in una sezione qui in due o tre sezioni.
Va bene.
Ok.
Mi è sfuggito un file, che voglio comunque farvi vedere.
Ed è questo.
È lo strumento APK.
Uscita.
Quindi questo fornisce un output.
Che strumento è stato utilizzato e che cosa fa uno strumento BC.
Non contiene molte informazioni utili.
È solo un insieme di meta-informazioni che possiamo vedere.
I file sconosciuti sono stati inseriti in questa directory e alcune versioni tecniche e cose del genere, ma voglio assicurarmi
che abbiamo discusso tutto in questa directory.
Ok.
Torniamo alla presentazione.
Chiudiamo rapidamente e passiamo alla sezione successiva, che è il manifest XML di Android.
Ok.
In questa sezione abbiamo imparato come ricompilare e costruire un'applicazione.
Abbiamo appreso le caratteristiche più importanti dello strumento APK che sono già state elencate qui.
Abbiamo anche visto le opzioni più importanti dello strumento APK, e c'è un'opzione aggiuntiva, che
è il tasto dash.
È possibile rendere l'applicazione automaticamente in grado di eseguire il debug impostando questo flag, ma per farlo è necessario
decodificare il manifest XML di Android.
Quindi dobbiamo decodificare queste risorse per fornire questo parametro.
È possibile farlo anche manualmente, come si vedrà nella prossima sezione, ma è un'opzione utile.
Quindi ho elencato anche qui e poi abbiamo dato un'occhiata alla versione non impostata e a quella compilata.
Qui possiamo vedere cos'è il bianco.
Queste directory sono identiche e l'anno, diciamo l'evidenziazione verde, significa che queste directory sono identiche
ma con una struttura diversa.
L'unica differenza rispetto allo strumento APK e alla decompressione è che le classi del file
di testo vengono compilate in singoli file smiley, singoli file di classe Java e il manifest XML di Android viene
compilato o decodificato in una struttura XML leggibile.
Bene, per il momento è tutto sullo strumento APK.
Ne sapremo di più durante questo corso quando avremo bisogno di alcune opzioni, perché non
voglio dedicare molto tempo a questo argomento in questo momento.
Nel PDF Cheat sheet c'è anche una bella panoramica, per cui vi invitiamo a darci un'occhiata.
Troverete altre opzioni, parametri e altre cose del genere, se volete fare una ricerca
veloce.
Per ora è tutto e ci vediamo nella prossima sezione.