Muito bem, pessoal, bem-vindos de volta.
Um desafio para recapitular tudo isso é exatamente o que faremos agora.
Portanto, esse é um desafio criptografado.
E vamos recapitular tudo o que aprendemos até agora.
Além disso, eu o dividi em três séries.
Portanto, a primeira será sobre como lidar com a sintaxe desconhecida do smiley.
Aprendemos muito neste capítulo, mas não podemos aprender tudo.
As coisas que aprendemos até agora são mais do que apenas os conceitos do Smiley.
Portanto, fizemos muitas correções enormes em aplicativos existentes, mas agora estamos enfrentando uma sintaxe de smiley desconhecida,
o que não é absolutamente nenhum problema para nós, como descobriremos na lição um.
Portanto, temos que lidar com uma sintaxe desconhecida, mas podemos reconstruir a funcionalidade da sintaxe
simplesmente ajustando nosso conhecimento sobre o Smiley a esse aplicativo.
Portanto, as conquistas que obtivemos até agora são impressionantes.
Muito bem.
A segunda lição será sobre como obter as informações desse aplicativo, as informações criptográficas,
chaves, segredos, tokens, coisas desse tipo.
Até o momento, não tivemos absolutamente nenhum problema com relação a isso porque, na maior parte do tempo, simplesmente
já tínhamos um fio lá dentro.
Mas agora temos que lidar com objetos complexos, porque isso é um aplicativo do mundo real e imprimir
objetos complexos não é algo que possamos fazer facilmente dentro ou fora dos sistemas e, portanto,
temos que encontrar maneiras de imprimir ou obter essas informações em outros objetos que possam ser impressos.
Portanto, isso é algo que faremos na lição dois.
A segunda lição é a abordagem mais fácil e é a abordagem mais comumente usada em meu site no momento.
Por isso, sempre recomendo fazer isso da maneira mais fácil.
Não há absolutamente nenhuma necessidade de optar pelo caminho mais difícil.
A maneira mais difícil.
Você já adivinhou que será menos de três.
E eu inseri esse modo difícil porque, no modo difícil, faremos um enorme remendo sorridente agora mesmo.
Portanto, inseriremos, acho que cerca de 50 ou 60 linhas, talvez 50 ou 60 linhas de smiley em um aplicativo existente
para realizar uma determinada tarefa.
Portanto, isso será ridículo, mas também será incrível, pois poderemos ver ali
o poder que temos em relação ao nosso patch de smiley.
Neste momento, talvez você nem perceba isso, mas com qualquer lição três, lá você descobrirá.
Muito bem.
Está bem.
Portanto, eu sugeriria que déssemos uma olhada nesse aplicativo.
Do que se trata esse desafio e como lidar com ele?
Muito bem, vamos lá.
Bem, aqui estamos de volta à VM do Ubuntu.
E agora vamos dar uma olhada nesse desafio para ver o que estamos enfrentando no momento.
Portanto, já criei um diretório com um EPS de um desafio para recapitular todos e, dessa forma, você sempre poderá encontrar
esse desafio como um anexo da seção.
Então, aqui está ele, e seu nome é APK.
Portanto, meu palpite bem fundamentado seria que esse é um desafio que tem a ver com o padrão de criptografia avançada.
Mas quem sabe, temos que descobrir isso.
Não deveríamos adivinhar, portanto, vamos instalá-lo como um BK e pronto.
Recebemos nosso primeiro erro.
Vejamos.
Instalar somente teste de falha.
Tudo bem, então temos que fornecer esse parâmetro de teste para corrigir isso.
Sim, mas neste caso, também podemos instalar pacotes somente de teste.
Ok, agora vamos ver.
Vamos voltar para a tela.
E aqui temos esse adorável ícone desse desafio.
Então, vamos começar com esse.
Tudo bem.
Leia-me se você puder.
E depois temos um texto aqui, que não podemos ler.
Ou, pelo menos, não consigo lê-lo no momento.
Este texto tem uma assinatura bastante óbvia, e esta é o sinal de igual no final.
O sinal de igual no final indica que está codificado em base64.
Portanto, a base64 é uma codificação alinhada a três bytes.
Se agora temos um texto que é três por linha, tudo está funcionando corretamente.
Mas digamos que queiramos criptografar o texto UDP.
Vamos ver você.
Você me faz dois, três ou deixe-me contar mais uma vez, dois, quatro ou cinco.
Aqui temos agora cinco caracteres e devemos acrescentar esse traço e não incluir esse novo caractere
de linha no final.
Isso significa que teremos apenas esses cinco caracteres.
Tudo bem.
Se agora digitarmos isso no Base64, veremos que estamos recebendo um sinal de igual no final, e esse sinal de igual é
um tipo de preenchimento.
Portanto, temos cinco caracteres, mas precisamos estar alinhados a três bytes, duas vezes três é seis e, portanto,
dentro dos nossos cinco caracteres, falta um preenchimento.
Portanto, estamos aguardando um sinal de igual.
Se agora você estiver usando o UDM, deverá corrigir absolutamente os dois sinais de igual porque agora faltam dois
bytes.
Temos quatro caracteres e agora estão faltando dois bytes.
Portanto, o preenchimento de dois bytes com o sinal de igual dá seis, o que significa que provavelmente são três python lite.
Se voltarmos um caractere, então teremos sim, não teremos três tamanhos iguais, porque teremos três caracteres
e três caracteres provavelmente estarão alinhados em três bytes.
Tudo bem.
Aqui podemos ver que estamos recebendo apenas esse texto.
Não, não há preenchimento no final.
Portanto, isso é algo com o qual você deve estar familiarizado, pois encontrará isso com frequência.
O Base64 é incrível porque podemos imprimir valores binários que não podem ser impressos.
Por exemplo, podemos imprimir caracteres como um caractere de nova linha.
Não podemos imprimir novos caracteres de linha em nossa tela porque não os veremos.
Ele está apenas acrescentando uma nova linha.
Há outros caracteres que são ainda menos óbvios, portanto, o base64 é muito bom para voltar e informar
o formato ASCII e o formato ASCII imprimível para caracteres não imprimíveis.
E isso é usado com bastante frequência em todos os tipos de aplicativos.
A única desvantagem é que nossa carga útil será um pouco maior.
Então, acho que é cerca de 30%.
Portanto, em relação a duas mensagens, não importa se você está lidando com arquivos grandes, então a base64 pode
ser um problema.
Tudo bem, perfeito.
Portanto, agora sabemos um pouco mais sobre a Base64.
Vamos ver se conseguimos decodificar esse texto aqui.
Portanto, estou usando o Echo Dash e ou talvez esse traço e esse parâmetro.
Vamos digitar UDP e canalizá-lo para a base64. Aqui podemos ver que não estamos mais tendo uma incorporação
porque estamos tendo você d e e y, que são cinco, e estamos tendo uma nova linha no final.
Portanto, temos seis caracteres e eles provavelmente estão alinhados se aplicarmos nosso traço e não acrescentarmos
esse novo caractere de linha no final e, portanto, temos apenas esses cinco caracteres.
A New Line pode causar muitos problemas, portanto, você também deve ter conhecimento sobre ela.
Muito bem.
Certo, perfeito.
Então, agora vamos decodificar esse texto e ver se podemos ler
isso, porque se você pegar esse aqui nesse texto e canalizá-lo para mais por 64 traços dx, então teremos de volta nosso utme.
Muito bem, vamos ver se esse também é o caso aqui.
Está bem.
Vejamos.
60 4-d se eu tiver cometido um erro de digitação.
Não deve ser tão grande, porque devemos ter a maioria das coisas.
Como em texto simples, se este estiver aqui.
plainText.
Portanto, sim, essa é a aparência dos caracteres não imprimíveis em um terminal.
Esses pontos de interrogação, ou seja, não temos ideia do valor que está por trás disso porque são dados binários.
Portanto, estamos usando uma codificação base64 para imprimi-los.
Portanto, aqui podemos ver que se trata de dados binários e não podemos lê-los.
Se passarmos isso pelo XD dash p, obteremos a representação hexadecimal desses bytes.
Mas isso nos ajuda ou não nos ajuda ainda mais.
Neste momento, poderíamos fazer uma análise de entropia nesses arquivos e veríamos que eles são bastante aleatórios,
o que significa que este texto aqui provavelmente está criptografado.
Não sabemos isso agora, mas temos as habilidades necessárias para descobrir.
Portanto, eu sugeriria que déssemos uma olhada.
Portanto, vamos entrar no EPS e em um desafio para recapitular tudo, e vamos dar uma olhada no Shadi entrando
nesse aplicativo.
Está bem.
A primeira coisa que gosto de fazer é dar uma olhada no manifesto.
Vejamos.
Temos apenas uma atividade.
Há também nossa atividade de lançamento, o que significa que esta é a atividade aqui.
Esse é o conteúdo da nossa tela.
Então vamos ver.
O resto parece bem normal.
Não estamos nem mesmo usando permissões no momento.
Portanto, esse aplicativo não é tão grande no manifesto do Android.
Tudo bem.
Aqui temos nossa atividade principal para que possamos ver que temos nosso familiar no método create.
Ainda ignoramos essa parte aqui.
Definimos a visualização de conteúdo, que é o layout deste aplicativo.
E, para ser mais específico, este aqui.
Ops.
E este aqui.
Portanto, este é o layout.
Ele é definido na atividade principal do layout.
Em seguida, temos a visualização de texto.
Portanto, esta visualização de texto pode ser sim, esta visualização de texto é esta parte aqui.
Essa parte, porque podemos ver aqui embaixo que estamos definindo esse texto como string codificada na base 64.
Mas antes de nos aprofundarmos muito nisso, vamos ver.
Além disso, estamos tendo um sistema. fora. println criptografa o texto.
Portanto, isso é interessante.
Podemos ver a abordagem de entrada e saída do sistema, o que significa que estamos tendo algo no logcat.
Vamos ver o logcat do adb e o grep desse sistema de IA aqui.
Nós a temos.
Iniciamos esse aplicativo duas vezes e podemos ver este aqui que está entrando no sistema.
Certo, não há nada ou nada de especial lá no momento.
Então vamos ver.
Temos esse texto para usar, definir o texto.
Portanto, esta é a parte aqui e podemos ver a base64 e a string cultural.
Muito bem, este é o nosso texto e vamos ver o que estamos usando.
Bem, estamos usando como mensagem criptografada.
Portanto, estamos usando o valor de retorno da função em nosso método base64 e string cultural.
Acho que, caso contrário, teremos que aumentar um pouco o tamanho.
Não é legível.
Está bem.
Portanto, agora temos tudo em uma única tela.
Portanto, estamos usando as cordas básicas C4 e CO2.
Portanto, o parâmetro de retorno desse parâmetro precisa ser uma cadeia de caracteres porque o estamos usando em uma função de texto definido.
Está bem.
Em seguida, temos uma mensagem de criptografia de script.
Essa é uma chamada de função.
E aqui temos essa estranha matriz de bytes e temos um e um segundo parâmetro com vírgula zero.
Tudo bem.
Essa linha é enorme, mas podemos dividi-la em partes individuais porque a saída está apenas combinando
tudo em uma linha.
Portanto, eu sugeriria que fizéssemos isso aqui.
Portanto, começamos com os colchetes externos e vamos para os colchetes internos.
Dessa forma, não estamos bagunçando tudo.
Portanto, aqui temos um texto definido.
Então, vejamos, este aqui é um texto definido.
Ops.
Está bem.
E então temos base64 e string cultural.
Então vamos ver.
Base64 e string cultural.
Esses são os colchetes deste modelo.
E aqui, o próximo.
Portanto, esses dois colchetes, o que significa que podemos ver que temos dois parâmetros aqui, porque obtivemos
vírgulas.
Portanto, este aqui.
Este é o nosso método base64 encode to string e estamos recebendo dois parâmetros.
O primeiro é este que não está visível.
Isso.
E o segundo é este aqui.
E esse é o segundo parâmetro do nosso método ENCODE two string.
Portanto, dentro desse método como mensagem criptografada, vamos ver, acho que estou ficando sem cor.
Portanto, estamos reutilizando o vermelho mais uma vez.
Temos esta e esta chave.
Sim.
Portanto, isso está funcionando perfeitamente bem no momento.
Não temos mais nenhum suporte, o que significa criptografia.
A mensagem criptografada tem apenas um parâmetro.
Então, vamos limpar isso aqui.
Está bem.
E este é o parâmetro aqui.
Está bem.
Se agora passarmos das classes internas para as classes externas, poderemos reconstruir como esses métodos
estão sendo chamados e o que está sendo retornado para o quê.
Está bem.
Então vamos ver.
Começamos com o primeiro.
A primeira é a mensagem crypto e crypt.
Está bem.
E isso tem apenas um parâmetro que não é uma matriz de bytes.
Está bem.
O próximo é o Coliseu, e este é basicamente uma corda de quatro e cultural.
Também podemos usar a cor verde.
Portanto, este é.
É a segunda.
É base64 e string cultural.
E esse é o primeiro parâmetro que recebe nosso retorno da função um.
Portanto.
Portanto, essa linha aqui.
E o segundo parâmetro é esse zero.
Está bem.
E este está retornando em string, que está sendo usado em text, view, set text.
Então, é isso que acontece nessa linha aqui.
E posso ouvir meu amigo girando porque, também para minha CPU, isso é uma loucura neste momento.
Está bem.
Mas nós conseguimos superar isso.
Portanto, temos uma mensagem criptografada.
É aqui que estamos dando uma olhada pela primeira vez.
Em seguida, daremos uma olhada nesse caso e pronto.
Portanto, você deveria ter entendido o que está acontecendo aqui.
Portanto, vamos dar uma olhada em uma mensagem de criptografia.
Está bem.
Antes de entrarmos no método de mensagem as crypto encrypt, talvez eu não tenha mencionado mais nada.
No momento, a codificação base64 para string tem dois parâmetros neste aqui, que
não sabemos agora o que é este e o zero.
Portanto, devemos dar uma olhada para entendermos o que está acontecendo aqui.
E a maneira mais fácil é clicar neste aqui, para ver que ele é do android dot util base64.
Então, vamos procurar por ele.
Sim, no mecanismo de pesquisa de sua preferência.
Muito bem, aqui está.
Desenvolvedor Android ponto com base64.
Vamos ver.
Ele manteve essa classe pública.
E, à direita, temos esses métodos.
Temos que usar métodos e códigos para o Spring.
Isso é bom.
Vamos dar uma olhada neles.
O primeiro está usando um by the right, um offset length e flex.
Portanto, temos quatro parâmetros aqui, o que significa que esse não é o método que estamos procurando.
Portanto, o método ENCODE two string está sendo sobrecarregado com diferentes quantidades de parâmetros e não
é isso que estamos procurando.
Portanto, tem que ser este.
Então vamos ver.
Perfeito.
Temos apenas dois parâmetros input e flex e podemos ver que o primeiro é uma matriz de bytes.
Portanto, agora sabemos que a função as crypto encrypt message está retornando e, por meio da matriz oc base64, codifica
os dados fornecidos e retorna uma string recém-alocada com o resultado.
Tudo bem.
O método Base64 está retornando a string.
E é exatamente isso que temos visto.
O C básico para string, que pode ser usado na função set text para obtê-lo em nosso aplicativo.
Tudo bem.
Está bem.
Então, vamos descobrir quais são esses parâmetros.
A primeira é a entrada.
Nesse caso, é uma matriz de bytes e os dados para codificá-la, o que parece fácil.
Em seguida, temos flex, e flex é um valor inteiro que controla determinados recursos da
saída codificada, passando o padrão, qualquer que seja ele, resulta em uma saída que se soma à RFC 2045.
Está bem.
Então, o irlandês vê que é um it's in standup e que está descrito como essa codificação funciona e, se você passar para o valor
padrão, poderemos simplesmente procurá-lo aqui.
O Four também pode ser usado com diferentes conjuntos de caracteres, por exemplo, mas se estivermos usando o valor
padrão, podemos ter certeza de que esse conjunto de caracteres se encaixa neste aqui.
Então, vamos ver o que é padrão e podemos encontrar isso aqui.
Constantes padrão.
O padrão é zero.
Perfeito.
Isso significa que não estamos lidando com conjuntos de caracteres realmente estranhos em nossa codificação base64.
Estamos usando um C básico para codificação, o que significa que podemos simplesmente, sim, podemos.
Poderíamos fazer isso em nosso terminal aqui, como este.
Tudo bem.
Está bem.
Isso é algo que você definitivamente deve fazer, pois, no passado, encontrei alguns formatos base64 que estavam usando
alguns conjuntos de caracteres realmente estranhos.
E isso bagunçará toda a sua codificação.
Portanto, se esse for o seu caso, você definitivamente deveria dar uma olhada.
Tudo bem.
Agora podemos voltar à mensagem criptografada.
Esta aqui é uma mensagem criptografada.
Desculpe-me por isso.
Então, clicamos duas vezes nessa classe e agora podemos ver que temos uma classe as crypto.
Mas isso não significa que seja assim.
Portanto, às vezes os desenvolvedores fazem coisas estranhas e não podemos confiar nisso.
Temos que fazê-lo.
Temos que fazer a engenharia reversa desse código.
Está bem.
Temos a mensagem de criptografia do método.
Esse método está sendo usado.
E, a propósito, isso é algo que já vimos e que também está retornando com a chuva.
Portanto, o primeiro parâmetro em nosso método base64 codifica a string aqui.
Isso não é uma matriz de bytes.
Tudo bem.
Então vamos ver.
Temos o key generator get instance, pois agora podemos ter certeza de que é realmente um sim, porque
esse gerador de chaves vem da classe genérica Java crypto key generator e está entrando como instância.
Em seguida, ele está inicializando esse gerador de chaves e, então, temos um canal de chave secreta.
Certo.
Chave.
Isso é bastante interessante, pois temos determinados parâmetros ou valores relacionados aos algoritmos
de criptografia nesse aplicativo, e podemos ver que estamos usando o modo CBC.
CBC é, eu acho, o modo de encadeamento de blocos de cifras, mas teremos um vídeo separado sobre isso.
Portanto, esse é um tipo de vídeo bônus, pois é um algoritmo de criptografia muito comum e você o encontrará
muito em todos os tipos de aplicativos, inclusive nos aplicativos para Android.
Portanto, há alguns truques simples que podem ajudá-lo caso o desenvolvedor tenha implementado errado.
E isso é algo que veremos no vídeo bônus.
Mas voltando ao assunto.
Então, aqui estamos gerando uma chave e essa chave está sendo usada em nossa criptografia e podemos ver que não
estamos tendo uma entrada nessa chave.
Estamos gerando isso.
Isso significa que essa chave provavelmente está sendo gerada aleatoriamente, o que significa que toda vez que esse método é chamado,
estamos usando uma chave diferente para nossos algoritmos de criptografia do nosso texto simples.
Isso também é muito bom.
Já podemos ver que o parâmetro que estamos inserindo nessa função já é o texto simples.
Portanto, o desafio não é obter o texto simples ou o texto cifrado.
O desafio é retirar esses objetos.
Por exemplo, esta chave secreta aqui.
Primeiro, vamos verificar algumas coisas.
Portanto, esta está gerando uma nova chave e esta está sendo gerada nesta mensagem.
Ligue para cá.
Se voltarmos à atividade principal, a mensagem ou esse método encrypt message será chamado toda vez que chamarmos
o método on create, o que significa que toda vez que iniciarmos esse aplicativo, estaremos
usando ou gerando uma nova chave para a nossa criptografia aqui.
Por isso, é absolutamente necessário imprimir essa chave, esta aqui.
Tudo bem.
Essa será a tarefa em nosso desafio único para recapitular todos os desafios.
Está bem.
E temos este aqui no modo CBC.
Então, temos o cifrão nele.
Portanto, estamos inicializando algo com nossa chave, a propósito.
E então temos nosso texto cifrado, que é o texto que retornaremos.
E agora podemos ver que nossa instância de cifra, que foi inicializada com nossa chave, está executando os
dois métodos finais em nosso texto simples.
Portanto, é aqui que a criptografia está finalmente ocorrendo e recebemos de volta o texto cifrado.
Portanto, o texto criptografado que será retornado dessa função como em binário aqui.
Está bem.
O texto cifrado será retornado, e essa linha também é bastante interessante.
Podemos ver que temos um ponto de cifra para obter o IV.
IV é o vetor de inicialização e também é um parâmetro que está sendo usado em nossa função de criptografia ou talvez
não esteja sendo usado.
E isso também é algo que temos que descobrir se esse valor que está sendo gerado aqui está
sendo usado em nossa criptografia no momento?
Presumo que não, porque já criamos nosso texto cifrado aqui, mas talvez este também
esteja sendo chamado aqui no meio.
Então, sim, teremos que dar uma olhada nisso.
Está bem.
E então temos o texto cifrado de retorno.
Então, estamos retornando para o OC e temos esse bloqueio de tentativa e captura.
Portanto, o bloco Stripe está observando esse caminho de código.
Se estiver ocorrendo algum erro, se houver um erro, por exemplo, não existe um algoritmo como exceção.
Por exemplo, se você estiver usando um MOS preciso que não é conhecido, vamos chamá-lo de UDP.
Acho que isso não é conhecido na classe de criptografia do Java.
Então, essa exceção seria lançada e estaria imprimindo o preço da pilha e esse método
retornaria nulo.
Portanto, sairemos desse método com o valor de retorno nulo, o que fará com que todo o aplicativo trave mais tarde.
Mas, nesse caso, ele foi projetado porque não deveria haver um erro na parte de criptografia no momento.
Tudo bem.
Está bem.
Portanto, isso é tudo para esta parte no momento.
E vamos voltar à atividade principal.
E, por último, mas não menos importante, temos o spider ray e já vimos que se trata de algum tipo de texto simples.
E também podemos observar isso porque o número 51, vejamos, o número 51 está ocorrendo com mais frequência do que
outros.
Quero dizer, isso está ocorrendo com bastante frequência e, portanto, é muito provável que não esteja sendo criptografado, esse
texto aqui.
Assim, poderíamos simplesmente usar um shell python e restaurar esses caracteres ou não.
Podemos simplesmente imprimi-los convertendo esses valores decimais em caracteres.
Portanto, o caráter de 83 é como OC, vamos ver qual é o 51-3.
Isso é interessante.
Depois, temos o 99 C e assim por diante.
Temos uma ideia do que essa palavra pode significar, mas também podemos simplesmente recuperar
esses caracteres, e essa é apenas uma tabela ASCII.
Portanto, se você digitar ASCII principal, obteremos esta bela tabela.
E aqui temos todas essas representações, por exemplo, o valor decimal 83, vejamos.
83.
Aqui temos a representação OCTA, a representação de valores de dados hexadecimais e também a representação de caracteres.
83.
Aqui está.
É o seu caráter.
Portanto, esse é o segredo por trás desse produto.
O que é interessante é o arrependimento.
O que é interessante é o número 51, pois o número 51 está em três.
E esse é o texto mais básico e ele perde que você poderia fazer em relação à criptografia em coisas
como essa.
Vamos supor que tenhamos recebido um texto e que ele tenha sido embaralhado.
Por exemplo, a letra A foi substituída ou alterada pela letra C.
A letra B foi substituída por outro valor, por exemplo, X e assim por diante.
Em um texto em inglês.
Algumas letras ocorrem com mais frequência do que outras, por exemplo, E e I.
Assim, ao descobrirmos o que é E e I, poderemos chegar a alguma conclusão sobre o motivo da confusão.
Por exemplo, um valor fixo de 13, qual 13?
Por exemplo, rotação, o que significa que estamos girando esse caractere em 13 caracteres.
Portanto, esse é um tipo de análise básica que poderíamos realizar.
Mas, nesse caso, no momento, isso nem é necessário, porque parece ser.
Sim, parece estar claro no texto que a letra E foi substituída pelo número três, mas
isso é tudo.
Portanto, o C poderia ser algo como secreto e aqui podemos ver o C, portanto, o Cree, mais uma vez.
Sim.
Portanto, isso também pode ser secreto.
Tudo bem.
Está bem.
Então, do que se trata esse desafio neste momento?
Já vimos que podemos obter o texto simples com bastante facilidade.
Essa não é a questão.
Também vimos que podemos obter o texto cifrado porque ele está sendo impresso na nossa
tela aqui.
Se iniciarmos esse aplicativo ou o reiniciarmos, poderemos ver: "Ah, isso é interessante".
A entrada é alterada porque toda vez que estamos chamando o método on create.
Esse material-chave será criado recentemente, está sendo alterado e nosso texto será criptografado de forma diferente.
E é exatamente disso que trata o nosso desafio.
Precisamos encontrar uma maneira de obter essas informações, a chave secreta e o vetor de inicialização.
Portanto, o que precisamos fazer é sair do método de criptografia.
A chave, que é esta aqui, e também o vetor de inicialização que pode ser retornado por
este método aqui.
Essa é a nossa tarefa e isso será feito nas próximas três lições.
Portanto, a primeira lição será sobre como lidar com a nova sintaxe inteligente.
Por exemplo, apenas tente pegar.
BLOCK Nunca vimos isso antes, e conseguiremos entender o que está acontecendo aqui
nessa parte sorridente.
Quero dizer, aqui no mundo Java, isso pode ser fácil, mas o smiley parece um pouco estranho, digamos.
Tudo bem.
A segunda lição tratará da impressão de objetos complexos.
Por exemplo, a chave do objeto de chave secreta ou o vetor de inicialização desse método.
No entanto, ele está sendo devolvido aqui.
Portanto, aprenderemos a lidar com objetos mais complexos.
E menos de três serão sobre a inserção de um enorme bloco de linhas sorridentes em um aplicativo existente.
Porque lá temos que levar em conta muitas coisas e temos que nos ajustar ainda mais.
Portanto, esse é um final perfeito para nossa série aqui.
Não obtemos uma vantagem real com isso porque tudo o que estamos fazendo na lição três, ou talvez a maioria das
coisas que estamos realizando no nível três, já foi feito no nível dois e na alavancagem.
Estamos descobrindo como imprimir objetos complexos, esses valores de retorno e coisas assim.
O nível três é mais importante se você estiver tentando aplicar um patch enorme em um aplicativo existente.
Quero dizer, não estamos limitados a determinadas classes ou métodos.
Podemos aplicar o patch que quisermos e também interagir com o que quisermos.
E isso é algo que faremos na terceira sessão. Na terceira sessão, além de corrigir esses valores escritos
de forma difícil, também descobriremos como interagir com os componentes I e isso é incrível,
pois aprenderemos como interagir com as atividades existentes para que possamos imprimir novas
mensagens e interagir com o design.
Também podemos alterar as cores de fundo e coisas do gênero.
As tarefas relacionadas aos olhos não são realmente fáceis no Android, mesmo no Java e no Mali, é ainda
pior.
Mas isso é algo que aprenderemos na terceira sessão.
Portanto, minha sugestão é que, se você estiver se sentindo absolutamente confortável em relação ao Smiley agora, talvez
dê uma olhada rápida na lição três.
Se isso for interessante ou novo para você, e se você disser, ok, isso é fácil, eu sei disso, então você
pode facilmente passar para o próximo com o nosso aplicativo de ping espacial, porque eles
terão ainda mais patches sofisticados e legais para fazer agora.
Muito bem.
Está bem.
Caso queira recapitular alguns aspectos, esta série de vídeos é para você agora mesmo.
Está bem.
Portanto, estou ansioso para vê-lo no próximo vídeo.