È tornato.
Quindi questa sfida non è stata affatto facile.
È un'applicazione del mondo reale e ci sono molte cose da fare.
Se avete risolto questa sfida, complimenti davvero.
Dopo ti meriti sicuramente la cintura arancione.
E se avete fatto un po' di fatica, non c'è alcun problema.
Affrontiamo questa sfida proprio ora e facciamo un passo alla volta.
Potete mettere in pausa e riavvolgere il video su un determinato punto e vi fornirò anche alcuni suggerimenti.
Forse vi mancava solo un pezzo per risolvere questa sfida.
Ecco perché mi piace fornire questi suggerimenti, perché con questi suggerimenti potreste essere in grado di risolvere
questa sfida e si tratta solo di un piccolo suggerimento.
Quindi, se aveste speso un anno, diverse ore o anche uno o due giorni, sareste arrivati a questo punto investendo tutto
quel tempo se aveste iniziato a fare reverse engineering di applicazioni del mondo reale.
Ma per questo corso, al momento, non dovrebbe essere necessario.
Pertanto, è bene prendere spunto da questo suggerimento e provare a risolverlo ancora una volta.
Ok, diamo un'occhiata.
Bene, ecco la macchina virtuale Ubuntu.
Diamo un'occhiata all'applicazione.
Quindi ho messo il mio nello spazio applicazioni giocando a ricompilare e la prima cosa che mi piace fare è
sbarazzarmi dei vecchi progetti perché se abbiamo modificato questa versione in passato e la stiamo patchando ancora
una volta, allora potremmo incorrere in problemi.
E questo mi è successo spesso in passato.
Perciò imparo da questo, eppure qui iniziamo con progetti puliti.
Bene, allora possiamo decompilare questo apk in D.
Ops e visualizza la domanda di pagamento.
Entriamo in questa cartella e apriamo l'intera cartella smiley all'interno di visual to code.
Ecco fatto.
Ok.
Ora possiamo minimizzare.
Ridurre al minimo questo I.
Questa parola è davvero difficile da pronunciare o da pronunciare per me.
Sì.
Dillo ad alta voce.
Quindi vogliamo prima fare il reverse engineering di questa applicazione, perché qual è il nostro compito?
Il nostro compito è quello di modificare le vite dei giocatori da cinque a, diciamo, sette, per esempio.
Pertanto, è necessario identificarlo nel codice Java.
Ovviamente possiamo farlo nel codice degli smiley, ma sì, buona fortuna per questo.
Quindi torniamo indietro di una directory e uso l'ombra.
Su questo punto, scusate, potete anche andare a cercare il testo per cambiare il vostro approccio, ma per me non è più facile
eseguirlo in questo modo.
Va bene.
Quindi vediamo.
Stiamo cercando, quindi usiamo la funzione di ricerca qui, il codice o l'applicazione che viene compilata.
Ok.
Ora possiamo abilitare, ad esempio, il campo e disabilitare tutti gli altri campi qui.
Il campo significa che ora stiamo cercando il nome della variabile che cerca le vite o una vita.
La vita sarebbe l'approccio migliore, perché abbiamo qui delle vite e svalutiamo anche la vita.
Da qualche parte.
Ok.
Possiamo risolvere la questione?
No, non importa.
Quindi, possiamo vedere che abbiamo una vita da recitare.
Va bene.
Abbiamo anche questa vita predefinita, e l'attribuzione del nome vita sembra essere irrilevante.
Quindi siamo alla ricerca di vite.
Ecco fatto.
Ora abbiamo di nuovo la schermata di gioco del giocatore e la classe del giocatore.
Per prima cosa analizziamo la classe dei giocatori.
E questo sembra promettere bene.
Abbiamo il nostro giocatore, abbiamo vite predefinite uguali a cinque e abbiamo un campo istanza anch'esso con vite
uguali a cinque.
Questo deve essere il valore della nostra vita nel nostro codice di programma o nella nostra applicazione.
Tuttavia, date un'occhiata anche all'altro.
In questo caso, si tratta di una schermata di gioco.
E qui possiamo vedere.
Bene, il finale protetto in vite è uguale a tre.
Non abbiamo tre vite.
Pertanto, possiamo saltare questo punto.
Stiamo iniziando e avendo cinque vite.
Pertanto, questo non sarà sicuramente il nostro valore corretto.
È molto interessante, o perlomeno è strano, che ci siano queste attribuzioni di molte vite o queste variabili
di molte vite.
Ma sì, stiamo facendo un'applicazione nel mondo reale, quindi questo è ciò con cui dobbiamo fare i conti.
Ok.
Quindi, metteteli ora uno accanto all'altro.
E poi entriamo nella piccola classe.
Abbiamo i componenti della grande spezieria e abbiamo la nostra classe di giocatori.
Quindi i componenti della penna F cap space e la visualizzazione di una classe qui.
Continuo a fare clic su queste fastidiose finestre e abilitiamo Java.
Estendiamo un po' il discorso.
Sì.
Credo che questo sia pronto per l'uso.
Abbiamo già parlato di questo file in passato, quindi non lo ripeteremo ancora una volta.
Possiamo vederlo direttamente una volta qui.
Pubblico statico, predefinito finale vive uguale a cinque.
Quindi questo valore deve essere modificato o vogliamo modificare questo valore in sette.
Ora abbiamo cambiato questo da 5 a 7, ma abbiamo anche questo qui.
Pertanto, dobbiamo applicare una patch anche a questo.
Possiamo esaminare il codice del giocatore qui e vedere se riusciamo a identificarlo.
Sì, lo vediamo proprio qui.
Linea 39.
Vediamo.
Qui non c'è attribuzione di linea.
Quindi questo sembra non corrispondere qui.
Dobbiamo anche sapere che non possiamo fare affidamento su di essa per tutto il tempo.
Ma per ora possiamo vedere che il valore è due volte cinque qui e cinque qui.
Quindi, se in questo codice cerchiamo 0x5, ancora una volta ci rimane solo questo.
Quindi il valore deve essere questo.
Ora, portiamo anche questo a sette.
Dovrebbe essere giusto.
Salviamo quindi questo file più volte.
Allora possiamo chiudere la questione.
Manteniamo l'apertura e costruiamo l'applicazione una volta sola.
Ricostruite questa app ancora una volta.
L'App K due sarà presente in questo qui.
Vediamo se la compilazione è andata a buon fine, perché se modifichiamo il codice dello smiley e commettiamo un errore
già molto grave, l'applicazione non verrà nemmeno compilata perché il compilatore capirà che questo non funzionerà e quindi
lancerà una freccia.
Nel nostro caso abbiamo creato questa applicazione, il che è un buon segno, ma non significa che abbiamo applicato
la patch.
Corretto.
È possibile che si verifichino ancora alcuni errori durante l'esecuzione dell'applicazione.
Quindi, se si inseriscono i valori in strani registri e cose del genere e nel runtime questo accade e non funziona,
l'applicazione si blocca, ma comunque costruire un'applicazione con successo è sempre un buon
segno.
Ora abbiamo questo all'interno della nostra directory del disco.
Rendiamolo un po' più grande.
Ok?
Ora stiamo usando la linea zip per questo e creiamo una nuova applicazione che è ora allineata
a quattro byte e che si chiama verifica APK con successo.
Bello.
Ora usiamo il segno APK su questo comando qui per firmare l'applicazione.
La password viene cambiata.
O almeno ho scelto di cambiare la password.
Allora ci siamo.
Questo è il nostro vecchio file APK.
Ora facciamo la connessione alla nostra macchina virtuale.
ADB Connect.
Collegarlo.
Bello.
Mettiamo qui lo schermo.
Ecco fatto.
Vediamo.
Abbiamo un'applicazione già installata e possiamo provare a sovrascrivere questo file o semplicemente disinstallarlo.
Nel mio caso, l'ho disinstallato perché è il modo più pulito di fare queste cose.
Quindi vediamo.
ADB disinstalla lo spazio spazzatura ping.
Sì.
L'applicazione è qui ora possiamo installare il nostro vecchio APK.
Bene, iniziamo da qui e vediamo se la nostra patch ha avuto successo.
L'applicazione si sta caricando.
Anche questo è un bene, perché possiamo ancora avere degli incidenti, ma per ora sembra promettente.
Facciamo clic sull'avvio e questo è un male.
Almeno l'app funziona, il che è un buon segno, ma possiamo vedere che abbiamo ancora cinque vite.
Perché?
Le ragioni possono essere diverse.
Il primo è che abbiamo fallito con la nostra patch.
Il secondo è solo in esposizione.
Quindi le nostre vite ora sono davvero sette.
Ma il display mostra ancora gli ultimi cinque.
Questo potrebbe non essere sincronizzato.
Potrebbero essere due tipi di valori diversi.
Per scoprirlo, dobbiamo morire ancora una volta quattro volte.
E se perdiamo la partita, allora non abbiamo davvero applicato la patch a questa applicazione.
E lo schermo era corretto su questo punto.
E i casi finali in cui si applica la patch a questo giocatore vivono di valore.
Ma questo non verrà utilizzato in questo codice.
Questo codice utilizza un valore diverso.
Per scoprirlo, dobbiamo dare ancora una volta un'occhiata a questo codice, ma ora un po' più da vicino.
Ok, chiudiamo questo qui e torniamo al codice.
Quindi riapriamo la discussione.
Ok, abbiamo queste tre variabili, ma nessuna di queste sembra essere il nostro valore di vita.
In teoria, questo può essere ancora possibile, ma inizia con il valore tre.
Quindi non credo nemmeno che questo sia il valore corretto.
Ora dobbiamo estendere la nostra ricerca.
Non cerchiamo campi.
Ora siamo alla ricerca del vero codice.
E qui possiamo vedere che abbiamo il nostro lettore di componenti.
Questo non è il valore corretto, perché abbiamo patch da 5 a 7 e anche questo
da 5 a 7.
Nessun effetto e questo è il valore tre.
Sì, saltiamo questo punto per ora.
Se non facciamo progressi, potremmo tornare su questo punto.
Ma per ora saltiamo il prossimo.
Cos'è questo qui?
La fabbrica di entità crea un giocatore in quattro vite, pari a cinque.
Se diamo un'occhiata, questo sembra essere l'ultimo valore che viene inizializzato con cinque.
Diamo quindi un'occhiata.
Va bene.
Qui abbiamo entity, create, play a word e possiamo vedere questo codice.
Sembra che stia creando un giocatore.
Abbiamo la posizione del giocatore.
Possiamo anche vedere il nome dello sprite del giocatore.
E abbiamo anche questo giocatore qui.
Stiamo creando un nuovo oggetto giocatore, chiamato info, e le vite di info vengono ora sovrascritte.
Oh, questo è il caso.
Ok.
Quindi abbiamo il nostro giocatore dot lives e questo giocatore dot lives ha ottenuto la patch due sette.
Questo qui.
Ma ora, quando creiamo questo oggetto, viene sovrascritto.
Pertanto, la nostra patch non ha avuto luogo perché questo sette viene sovrascritto a questo punto
con il valore cinque.
È piuttosto strano, vero?
Sì, è decisamente strano.
E non sono nemmeno sicuro del motivo di questa scelta.
Immagino che lo sviluppatore abbia creato questa classe di giocatori per usarla come il modo in cui lo sviluppatore usa questo
punto vita del giocatore come valore iniziale.
Ma dopo aver scritto questo codice.
Ma qui lo sviluppatore ha scelto.
Ok, facciamo in modo che il giocatore inizi con cinque vite.
Non sono sicuro di cosa ho inizializzato.
Questo potrebbe essere un processo di riflessione.
Perché è potuto accadere in questo modo, ma comunque dobbiamo affrontarlo.
Anche questo non è un biasimo nei confronti dello sviluppatore.
Sono davvero grato di avere a disposizione questa fantastica applicazione per continuare a esercitarmi e la troverete
anche in molte altre applicazioni.
Quindi si esegue un processo di reverse engineering.
Si identifica questa classe qui, questa classe di giocatori, e ora si sa, o si pensa, che questo
deve essere il nostro valore qui.
Abbiamo questo giocatore.
Questo giocatore ha delle vite e il valore di questa vita è cinque.
Questo deve essere il nostro valore.
E poi si applica una patch a questo e si incontra.
Non ha funzionato perché è stato sovrascritto qui.
Questo è ciò che si incontra spesso.
Perciò dobbiamo scavare un po' più a fondo o, come continuano a dire altri, dobbiamo impegnarci di più.
Va bene.
Entriamo quindi in questa classe e scopriamo dove si trova questo valore e cerchiamo di correggere questo valore che abbiamo messo da parte.
Abbiamo affiancato ancora una volta le due cose.
Bene.
Ok.
Sì, l'abbiamo chiuso e questo è stato un bene perché stiamo ripulendo anche questa versione.
Abbiamo modificato questo oggetto giocatore qui.
Questo vive e questo vive.
Ma non vogliamo applicare una patch o aggiungerne un'altra in questo momento.
Se fallisce, si può provare a patchare tutti i valori in seguito.
Ma a me piace eseguire la patch di un singolo task e questo è anche ciò che vi raccomando, perché se si
patchano due o tre cose allo stesso tempo e si ottiene un errore, non si sa dove si accoda l'errore.
Pertanto, è necessario tornare indietro e rifarlo ancora una volta.
E così facendo, sì, all'inizio è più lento, ma alla fine potrebbe essere più veloce.
Ok, chiariamo ancora una volta questo punto e poi utilizziamo lo strumento APK D.
Entriamo in questa directory e apriamo la Smiley Directory all'interno del codice di Visual Studio.
Lasciando da parte questi siti, continuate a fare clic su quelle fastidiose finestre.
Non ancora.
La E di Capek.
E siamo all'interno, vediamo, dei servizi di verniciatura dello spazio, dei servizi e poi della fabbrica di entità.
Ok, ora ci sono quelle fastidiose finestre.
Abilitiamo Java ed ecco fatto.
E ora si potrebbe pensare.
Aspetta, cosa?
Questo file è ridicolo.
Massiccio.
Siamo già pronti per questo?
Facciamo un piccolo passo indietro, perché ora la questione è davvero enorme.
Ma facciamo il passo dopo passo e dobbiamo ricordare ciò che abbiamo imparato.
Prima di tutto, fate clic su questo link.
Ok?
Quindi abbiamo la struttura del file e la struttura del file è la stessa.
Eliminiamo la parte che distrae.
Esaminiamo rapidamente questo aspetto.
Questa è la nostra classe.
Non estendiamo una classe aggiuntiva e questo è il nome corretto di questa classe.
Metodo diretto significa che abbiamo metodi e costruttori privati.
In questo caso, solo questo costruttore.
Bene, da questo punto fino alla fine, sembra che abbiamo solo metodi pubblici, statici pubblici o semplicemente
pubblici.
Il metodo create player è pubblico e statico e restituisce un'entità.
Proviamo a trovare questo metodo e possiamo farlo cercando, ad esempio, create player.
OC e TB possono vedere il metodo public static create player.
Questo è il nostro valore di ritorno com.
Il nostro team è un'entità.
Questo è corretto.
Questo è questo qui e fornire l'oggetto mondo come parametro.
Va bene.
Abbiamo identificato il nostro metodo e ora esaminiamo solo questa parte del codice dello smiley.
Possiamo cancellare tutto il resto.
Ma non vi consiglio di farlo, perché dovremo aggiungerlo in seguito e sarà un pasticcio.
Ma se volete liberarvi della distrazione, copiate tutto questo dall'inizio del metodo dei punti fino alla
fine del metodo della fine.
E poi avete tagliato questo pezzo di codice e sarà un po' più facile.
Ok, lo suggerisco.
Proviamo a farlo.
Quindi creiamo un nuovo file.
Ok.
Poi abbiamo il metodo create player.
L'aspetto è ancora massiccio, ma ricordiamo ancora una volta il nostro primo approccio al patch Marley.
Questo potrebbe essere il singolo pezzo mancante per voi se non avete ancora risolto questa sfida.
Ricapitoliamo un po' la situazione.
Diamo un'occhiata al codice.
Ok.
Stiamo cercando questo qui.
Queste sono le informazioni sull'oggetto giocatore.
E questo oggetto giocatore ha un nome o una variabile.
Questo campo di istanza vive.
Abbiamo applicato una patch a questo, ma qui viene sovrascritto ancora una volta con cinque.
Cosa possiamo fare per identificare questo aspetto all'interno del codice?
Sì, possiamo cercare, ad esempio, info, ma qui troviamo anche tutti gli altri valori di info.
Successivamente, possiamo adottare lo stesso approccio che abbiamo usato per il nostro primo smiley patching.
Possiamo cercare il valore cinque.
Il valore cinque non verrà più utilizzato in questo codice.
Quindi, avendo questo valore cinque, potremmo essere in grado di identificare questa riga di codice.
E poi non dobbiamo capire questa riga di codice.
Credo che sia così.
Non sono sicuro di questo.
Lo vedremo più avanti.
Ma possiamo farlo esattamente come abbiamo fatto nella nostra prima patch di smiley.
È sufficiente modificare il valore esadecimale.
E poi abbiamo applicato la nostra patch.
Rimettiamo a posto questa applicazione, la firmiamo, la installiamo e la controlliamo.
Quindi, nel caso in cui questo fosse il pezzo mancante per risolvere la sfida, so che questa sfida
non è stata affatto facile, perché se cercate di farvi strada, sarà molto difficile.
Ma ho strutturato questo corso in un certo modo che vi aiuterà a risolvere queste ulteriori sfide riprendendo
l'approccio che abbiamo imparato.
E questo è anche l'approccio che vi aiuta nelle applicazioni del mondo reale.
Ecco perché ho strutturato questo corso in questo modo.
Quindi, se non siete ancora riusciti a risolvere questa sfida, provate subito questo approccio.
E dopo, ci si sente benissimo se si è patchata questa applicazione.
Sì.
Avete un piccolo indizio, ma non chiamiamolo indizio.
Questo è stato solo un ripasso di ciò che abbiamo già imparato.
Ok.
Quindi, per favore, passate il video e poi potete riavvolgerlo dopo averlo provato ancora una volta.
E per tutte le altre persone, andrò avanti subito con la sfida.
Quindi vediamo.
Ok, fammi rispondere.
Quindi cerchiamo in questo metodo e ora cerchiamo il valore cinque.
Non qui.
Cerchiamo qui il valore di 50x5.
Abbiamo ricevuto solo un colpo.
Bello.
Diamo un'occhiata.
Va bene.
Abbiamo le informazioni sulla nostra B due locale.
Bello.
Ora non è presente nel nome della variabile.
Questo è il nome della nostra istanza.
Ma a chi importa?
Abbiamo trovato la nostra istanza così bella.
Questo è il nostro oggetto giocatore.
Ottimo.
Ciò significa che stiamo inserendo il valore cinque in v sette e possiamo vedere che v sette viene rimesso in
v due, che è il nostro oggetto giocatore.
Voglio dire, credo che ne abbiamo parlato, ma non in dettaglio.
Tuttavia, non ci preoccupiamo di questa istruzione perché questo è il nostro valore.
Cinque questo qui.
Mettiamo una toppa a questo.
Ok.
Se lo si lancia qui, non ha senso, perché dobbiamo applicare una patch nel file dello smiley vero e proprio.
Ma diamo ancora una volta un'occhiata qui.
Possiamo vedere che la riga 80.
Diamo un'occhiata alla riga 80.
Oh, bene, bello.
Abbiamo anche il numero esatto della riga in cui stiamo inizializzando o sovrascrivendo il nostro oggetto vita.
Possiamo anche navigare utilizzando questo numero di linea otto, ma non fate affidamento su questo.
L'abbiamo visto nel filmato di pochi istanti prima.
Questo non è sempre accurato.
In questo caso, lo prendiamo perché sembra adattarsi al nostro codice.
Verifichiamo se ci troviamo davvero in questa linea guardando un po' verso l'alto e verso il basso.
Ok, ragazzi, super gentile.
Ora possiamo cercare, ad esempio, l'intera istruzione qui.
Ok.
Quindi stiamo cercando Ock per chiarire questo punto.
Abbiamo copiato il metodo solo per creare un giocatore per ottenere Yeah.
Tutta questa distrazione viene meno e poi è anche più facile cercare questo valore cinque perché qui possiamo vedere
che non stiamo più usando questo valore cinque.
Chiudiamo la questione che non è poi così confusa.
Eccoci ora al file smiley originale in questa fabbrica di entità.
Smiley e abbiamo usato la stringa di prima per identificare questo valore qui.
Ora possiamo modificare questo valore portandolo a sette.
Salviamo questo file.
Uso la scorciatoia, ma per essere sicuro.
Ok.
Ora possiamo chiuderlo e tornare al nostro processo di costruzione dell'applicazione, alla sua firma e così via.
APK Tool sarà.
Vediamo se riusciamo a costruire una rosa.
No, va bene così.
Poi entriamo in questa directory.
Ora possiamo vedere che non abbiamo ancora un file vecchio, quindi abbiamo pulito correttamente questo codice.
Prima di zoomare un po', stiamo usando SIP Align Modification con successo.
Ora abbiamo questo vecchio APK, che è la versione allineata con lo zip di questo e ora stiamo usando l'APK
signer per firmare questa modifica dell'applicazione.
È la mia password e ho fatto un errore di battitura.
Cambiarlo.
Va bene.
Ora possiamo installarlo.
ADB installa l'apk.
No, non ancora.
Stiamo disinstallando la nostra prima versione.
Per questo motivo utilizziamo la disinstallazione ADB.
Sì.
E ora torniamo allo schermo.
Copia dello schermo.
E vediamo.
Va bene.
Sembra buono.
ADB installa l'apk.
Ecco fatto.
Avviamo questa applicazione.
Non ci sono frecce.
Un ottimo inizio.
Incredibile.
Abbiamo cambiato vita da 5 a 7 in questo momento.
Insomma, non si tratta di un grande salto e questo può essere anche un falso positivo in questo momento.
Come già detto, possiamo avere le nostre vite di giocatore e le vite all'interno del nostro display per assicurarci
di avere sette vite.
Dobbiamo morire sette volte.
E se il gioco finisce dopo, sappiamo che la nostra patch ha avuto successo.
Possiamo vedere che la vita sta già aumentando.
Bello.
Super bello.
Ok, ma questo non era un vero compito.
Proviamo a modificare questo valore e a portare le nostre vite a 999.
Chiudiamo la questione.
Torniamo quindi al cucchiaio.
Apriamo ancora una volta la directory degli smiley con il codice di Wizard Studio.
E saltiamo direttamente nell'ultimo luogo in cui siamo stati.
Ora sappiamo che la riga 1417 è la vita del nostro giocatore.
Facciamo 999.
Il valore è questo 137.
Ok.
Salviamo questo e costruiamo di nuovo questa app.
Oh.
Si verifica un errore.
Vediamo.
Il 999 non può essere inserito in un capezzolo.
Impossibile smart non ha potuto file somali.
Interessante messaggio di errore relativo a questo errore.
Che cosa significa?
Stiamo cercando di inserire il numero 999 in un capezzolo e un capezzolo è un valore a quattro bit, ma 999 non entra in quattro
bit.
È assolutamente corretto.
Vediamo.
Perché abbiamo questo caso qui?
Quindi torniamo alla directory Somali con il codice Somali.
Ok.
Se lo avete colpito a questo punto, non c'è assolutamente nessun problema perché il Mali è davvero caldo.
E se per voi è la prima volta che agite su questi registri, sì.
Pensate allo spazio che questi registri offrono.
Questo è super sexy.
Ci vuole anche tempo.
Mi ci è voluto un po' di tempo per impararlo, quindi non sentitevi frustrati.
Riflettiamo insieme su questo punto.
Inoltre, è possibile mettere in pausa e riavvolgere il video ancora una volta per risolvere questa sfida.
Cosa fa questa linea?
Abbiamo tagliato con slash 4v7 e poi il nostro 999 e questo valore ha funzionato.
Ma questo al momento non funziona.
Dov'è la differenza?
Sì, certo, per quanto riguarda il valore, ma qual è il problema?
Pertanto, dobbiamo comprendere appieno questa linea.
Controlliamo questo.
Così ho aperto il mio browser web.
E ora l'apertura di questo.
Diamo un'occhiata a cons dash for.
Oh sì.
Assolutamente chiaro in questo momento.
Mette il divieto di Costanza nel VIX.
Oh beh, non preoccuparti.
Ho commesso questo errore così spesso e lo commetto ancora.
Quindi non è assolutamente un problema se questo era il vostro punto strategico in questa sfida.
Ora dovrebbe essere chiaro che questo 1-4 sposta solo quattro bit, ma il programma si rende conto che ho più
di quattro bit per questo valore.
Perciò lancia un errore perché il compilatore nota che, beh, sto per buttare via un sacco di numeri e questo potrebbe
non essere previsto.
Pertanto non vado avanti.
Preferirei stampare questo errore in modo che lo sviluppatore possa verificarlo ancora una volta.
Va bene, allora cosa possiamo fare?
Possiamo verificare se questo valore entra in 16 bit.
Facciamo questo per verificarlo.
Possiamo fare una semplice operazione matematica.
Quindi due volte quattro significa che questo è l'intervallo che abbiamo per quattro bit.
16.
Esatto.
Quindi, se lo facciamo sulla carta, tiriamo fuori velocemente il modello grafico e poi lo facciamo insieme.
Ok.
Eccoci al modello grafico.
Diamo un'occhiata.
Quindi, due quadrati quattro significa che abbiamo quattro bit e quattro bit sembrano avere l'intervallo 16.
Controlliamo questo.
Quindi quattro bit significano che dobbiamo passare dal quadrato zero al quadrato uno al quadrato due al quadrato tre.
Questo significa che abbiamo uno, due, quattro, otto.
Se sommiamo tutti questi valori qui, otteniamo il valore 15.
Cominciamo a contare da zero.
Questo significa che abbiamo da 0 a 15, cioè 16 valori.
Scopriamo quanti bit sono necessari per memorizzare questo valore.
999.
Possiamo farlo sulla carta.
Pertanto, dobbiamo estendere questo schema qui.
Quindi abbiamo due quadrati per due quadrati 512, 1024, 2000, 48.
Va bene.
A questo punto, abbiamo già abbastanza valori per memorizzare questo valore.
999.
Per non fare sempre questo sulla carta.
A questo scopo possiamo utilizzare anche Python.
Quindi, all'interno della funzione bin, possiamo inserire questo valore 999 e poi possiamo vedere, ok, quanti bit sono necessari per rappresentare
questo valore.
999 E questo è uno, due, tre, quattro, cinque, sei, sette, otto, nove, dieci.
Ok, abbiamo dieci bit.
Questo qui.
Va bene.
Pertanto, questi quattro bit, se memorizziamo solo questi quattro bit nel nostro valore.
Scusate, il disegno era un po' brutto.
Quindi se memorizziamo solo i bit.
Nel nostro registro.
Credo che fosse con sette, ma questo non ha molta importanza.
A questo punto il programma incontra il conteggio.
Ebbene, cosa sta accadendo a quei pezzi?
Siete davvero sicuri di volerlo fare in questo modo?
Credo di no.
Pertanto, lancio una freccia.
Ok.
Ecco il senso di questo con slash for e del messaggio di errore.
Torniamo a questo.
E ora sappiamo che quattro bit non sono sufficienti.
Se si controlla questo, possiamo utilizzare il correttore 16.
Questo funzionerà.
Se si vuole essere un hacker simpatico e allo stesso tempo efficiente dal punto di vista delle risorse, allora si usa il con slash 16.
Nel mio caso, non mi interessano queste risorse.
Stiamo parlando solo di un po' di bit.
Pertanto utilizziamo questo, che significa che abbiamo l'intera gamma di 32 bit.
I giochi di parole e le rimozioni sono semplicemente questo.
Ciò significa che il valore predefinito è di 32 bit e ora possiamo salvarlo.
Chiudiamo questo qui.
Quindi andiamo in questa directory e vediamo se possiamo costruire questa applicazione
apk per essere un pinger spaziale.
Bene, vediamo che la compilazione è andata a buon fine.
Ottimo.
La freccia è andata via.
Non possiamo fare affidamento su questo se la patch di questa applicazione è già stata applicata con successo.
Ma sembra che si adatti ai requisiti degli smiley nel nostro codice in questo momento.
Bello.
Diamo un'occhiata.
Quindi andiamo in questo elenco di directory e possiamo vedere che non abbiamo ancora fatto pulizia.
Ora dobbiamo solo assicurarci di utilizzare o cancellare la vecchia versione e di utilizzare
la nuova.
Quindi sbarazziamoci di questo.
Ok.
E ora.
Ora possiamo allineare questo.
Corretto.
Firmiamo questa applicazione, la modifichiamo e poi usiamo ADB per installare l'APK.
No, prima si disinstalla la versione originale.
Quindi ADB disinstalla il grande pannello spaziale.
Sì.
E vediamo.
L'applicazione non è più disponibile.
Installazione ADB.
È corretto, perché stiamo utilizzando il vecchio APK.
Quindi, come vedete, si possono commettere molti errori se non si è assolutamente concentrati su questo aspetto.
Ho provato a installare questa versione, che è la versione di compilazione, ma non quella di progettazione.
Abbiamo firmato questa app e questa è questa.
Ok.
Quindi anche questo mi succede ancora spesso.
Anche cose super fastidiose come dimenticare la sicurezza, il file smiley.
Ok, e il dolore spaziale e vediamo.
Ancora senza frecce.
Un buon segno.
Ancora nessun errore.
Ecco fatto.
Abbiamo 999 vite.
Super fantastico.
Se ci siete riusciti, congratulazioni.
Quindi avete già patchato un bel gioco per cellulari e non è stato così facile, a dire il vero.
Se lo aveste fatto all'inizio di questo corso, sarebbe stato travolgente.
Ma dividendo il tutto in questi singoli passaggi, siamo ora in grado di applicare una patch a questa applicazione.
E sapete cosa?
È inoltre possibile modificare il proprio punteggio già da lì.
È possibile trovarlo nella stessa classe.
Se volete una sfida bonus, scegliete questo.
Applicare un punteggio elevato che nessun altro è in grado di raggiungere.
Ok, allora divertitevi e congratulazioni.
Ti meriti la cintura arancione.
Divertitevi con questo.
E nella prossima puntata ci occuperemo o daremo un'occhiata ai blocchi di if.