Bem-vindos de volta, pessoal.
Gostaria de oferecer um vídeo bônus sobre a criptografia XOR antes de prosseguirmos
com outro desafio.
Quero dizer, este aqui não é obrigatório.
E se você tiver resolvido esse desafio, não há problema algum em continuar com este curso.
Neste vídeo, gostaria de mostrar a você uma abordagem diferente, sobre a qual não falamos até agora.
E isso pode ser muito útil.
Estou falando de reutilizar a saída de exibição existente e, por exemplo, esta aqui.
Vamos abrir o smartphone.
E aqui temos nosso desafio e esta é a versão do patch.
Portanto, no logcat do ADB, devemos encontrar nossa chave secreta.
Ops.
Se o escrevermos.
Correto.
Está bem.
Muitas mesas.
Aqui está.
Entretanto, já abrimos isso três vezes e ele tem nossa saída.
Tudo bem?
Funciona perfeitamente bem.
E não há nada de errado com este aqui.
Mas agora, não seria bom se imprimíssemos esse texto aqui?
E essa é minha mensagem secreta nesse lugar onde existe.
Qual foi a mensagem?
Portanto, se você reutilizar essa saída para que o aplicativo original imprima a nossa saída, seria muito
bom.
Eu sei.
Fico feliz que tenha perguntado e, portanto, vamos dar uma olhada nisso, como podemos realizar essa tarefa.
Portanto, este não é tão complicado e é isso que vamos fazer agora.
Tudo bem.
Para fazer isso, vamos primeiro dar uma olhada nesse aplicativo na versão corrigida e ver como
essa saída está sendo gerada.
Então, entramos no EPS, criptografia XOR e, em seguida, nesse diretório de criptografia XOR.
E, dentro disso, temos nossa versão corrigida.
Agora estamos abrindo nossa versão corrigida com sombra.
Desculpe-me.
A Oak Creek School está carregando.
E aqui temos isso com calma.
Criptografia de invasão de aplicativos.
Temos essa atividade principal e aqui podemos ver, sim, essa é definitivamente a nossa versão do patch, porque temos o
patch para o sistema. fora. println nesse aplicativo.
Quero dizer, isso parece absolutamente ridículo.
Inserimos esse código completo baseado apenas no Smiley nesse aplicativo original.
Está bem.
Então, aqui podemos ver que estamos imprimindo este aqui, esta parte e esta parte é, vamos ver, criptografar descriptografar.
Esse é o valor de retorno desse método e, vejamos, estamos abrindo-o com um clique duplo e
podemos ver este aqui.
Está em uma cadeia de caracteres.
Portanto, estamos voltando e usando esse método e, é claro, porque também o estamos imprimindo
aqui.
Tudo bem.
Não estamos atribuindo essa string a uma determinada variável, mas, no Smiley, sabemos que essa string
pode ser mantida em um registro.
Portanto, abaixo deste, temos esta visualização de texto definida como texto e este é exatamente o texto que vimos e que
está sendo aberto.
Sim.
Qual foi a mensagem?
Portanto, a única coisa que precisamos fazer é nos livrar deste aqui e deste texto aqui, e vamos fazer
com que ele seja lido.
E então temos que verificar qual registro está sendo usado para o valor de retorno aqui.
Vamos chamá-lo de B, x e, em seguida, chamaremos esse método de texto definido com nosso registro aqui.
E então, em vez de qual era a mensagem?
Em vez deste aqui, devemos colocar nosso texto criptografado neste aplicativo aqui.
Portanto, não precisamos nos conectar via ADB e buscar a saída do logcat do ADB.
Podemos simplesmente reutilizar as exibições existentes desse aplicativo para imprimir nosso texto.
Absolutamente incrível.
Certo?
Vamos fazer isso.
Para isso, temos que decodificar esse aplicativo, a versão corrigida.
Então, este aqui, a ferramenta APK, o APK externo.
Portanto, aqui temos esse diretório externo.
E vamos abrir isso com o código do Wizard Studio.
Tudo bem.
E aqui está.
E selecionamos Java.
Já está pronto.
Isso é bom.
E agora não precisamos reverter tudo aqui.
Começamos a engenharia reversa nesta parte aqui.
Então, vamos comparar isso.
Entramos em aplicativos, criptografia XOR.
Vamos ver qual é a linha em nosso código.
Quero dizer, é a linha 21.
Se dermos uma olhada no número dessa linha aqui.
Mas acho que isso é bem antes de nosso sistema sair.
Então, vamos ver essa mesa.
Eu deveria simplificar as coisas.
Basta abrir.
Acho que isso é mais fácil.
Tudo bem.
Com hacking e corrupção de aplicativos.
Atividade principal.
Sim.
Linha 21 e Sistema. fora. println.
Acho que estávamos na linha 21.
Só precisamos fazer a engenharia reversa daqui para cima e, então, sim, poderemos realizar essa tarefa.
Muito bem, vamos levar isso para a mesa digitalizadora e depois dar uma olhada nesta.
Ok, vamos fazer uma corrida rápida aqui.
Portanto, iniciamos essa linha e o restante será simplesmente ignorado.
Esse pequeno, esse aqui será ignorado.
Então, vemos que a linha nessa linha contém nossa string criptografada.
Está bem.
Em seguida, chamamos o método invocar estático estético e chamamos criptografar descriptografar, que é exatamente o método que queremos ter,
porque esse método está retornando em uma cadeia de caracteres.
E vamos ver.
Sim, aqui podemos ver que esse é o tipo de retorno return e ele será uma string, portanto, nossa string será
movida para V zero.
O resultado será movido para v zero, o que significa que we zero agora está armazenando nossa string descriptografada.
Estamos substituindo o zero neste momento.
E, então, temos o objeto escapado.
Então, buscamos o sistema.
Sistema pensado.
E podemos ver que estamos invocando um método virtual nesse campo e estamos chamando o método
print line e estamos chamando print line com um argumento e esse argumento é v zero.
E este aqui, talvez seja melhor mudar algumas cores.
Portanto, este é o nosso argumento para essa função e este é o nosso Spring OC descriptografado.
E então podemos ver que o zero será atribuído a um rótulo que está criptografado, mas podemos simplesmente ignorar
essa parte aqui.
O zero ainda está segurando nossa string descriptografada.
E depois vamos pegar outra cor.
E, em seguida, temos um objeto I get e estamos buscando em p zero.
Esse objeto pode ter a atividade principal de busca.
Esse é o nosso objeto this e estamos obtendo a visualização de texto da atividade principal.
Então, aqui podemos ver este aqui.
Esse é o tipo no qual estamos obtendo a exibição de texto de ponto da atividade principal.
Vencemos e, portanto, a vitória está mantida.
E então temos nossa tela.
Outra cor.
Eu também.
Portanto, o vemos ainda intocado.
Ainda estamos segurando nossa string descriptografada.
Aqui temos outra string.
V dois.
V dois é agora a mensagem.
E qual foi a mensagem?
E daí?
E assim por diante.
E depois de volta ao amarelo.
Estamos chamando invoke virtual em V um.
Queremos ver aqui a nossa visualização de texto.
Ops.
Isso foi um pouco estranho.
Aqui está.
Portanto, queremos que essa seja nossa visualização de texto da atividade principal.
Espero que você consiga ler isso, pois é quase impossível para mim no momento.
E estamos chamando o método set text.
Portanto, nessa linha aqui, estamos chamando a visualização de texto da atividade principal e estamos chamando o método.
Este aqui.
Definir texto.
Está bem.
Portanto, aqui temos uma espécie de nova linha para o nosso parâmetro, e o parâmetro é vamos alterá-lo.
Para qual cor não tínhamos agora nesta, o parâmetro agora é este e não está em uma string, mas em uma sequência
de caracteres.
Portanto, esse é o nosso parâmetro e vamos fazer isso dessa maneira.
Está bem.
E talvez para ter certeza.
Tudo bem.
Esse é o nosso parâmetro.
E essa função está retornando no vazio.
Está bem.
Portanto, isso significa que nosso parâmetro está dentro de B dois.
E esse é o nosso parâmetro.
E tudo o que precisamos fazer é substituir este aqui.
Esse v dois será zero.
Ops.
Aqui está.
Porque se substituirmos o dois por v zero, não estaremos passando essa string.
Qual era a mensagem deste aqui?
E, em seguida, estamos passando esse para essa função.
E esta é a nossa string descriptografada.
Portanto, na tela, em vez da mensagem, deve aparecer nossa string descriptografada.
Tudo bem.
Está bem.
Portanto, isso foi um pouco rápido, mas acho que você ainda pode acompanhar porque fizemos a
engenharia reversa nos últimos vídeos.
Então, sim, espero que você possa acompanhar, caso esteja muito rápido, basta me enviar uma mensagem
para que eu grave novamente e faça isso um pouco mais devagar e também explique um pouco mais detalhadamente o que
estamos fazendo.
Muito bem, perfeito.
Então, vamos voltar e aplicar esse patch aqui.
Vamos fazer isso.
Certo, aqui estamos de volta à VM do Ubuntu e podemos ver nesta aqui, esta é a string que queremos
substituir.
Essa é a nossa ferramenta B e temos que substituir essa string, esse registro B two por v
zero, porque v zero é o valor de retorno aqui e esse registro não será atribuído a uma variável, mas também não será sobrescrito
no nosso código de aplicativo e, portanto, v zero ainda mantém a referência à string e estamos
simplesmente colocando esse registro nessa função agora.
Certo, perfeito.
Portanto, o patch é bem fácil.
Tudo o que precisamos fazer é alterar esse parâmetro de V dois para V zero, e pronto.
Vamos salvar isso.
Vamos retirar esse aplicativo novamente e ver se isso funciona, para que ele não seja mais necessário.
Está bem.
Agora está um pouco confuso porque estamos dentro do diretório dist this e agora temos esse diretório
out, que é o nosso aplicativo compilado do dia no diretório do disco.
Portanto, temos que reiniciar este aqui.
Então, dois épicos estão fora.
Espero tê-lo salvo 10.000 vezes, mas acho que deve funcionar.
Está bem.
Isso é um pouco mais tarde.
Ops.
Desculpe.
Aqui está.
E dentro desse diretório, ops, o diretório de disco desse diretório de saída, temos agora outro épico
de saída.
Portanto, estamos usando a tirolesa e isso está correto.
Não é.
Ah, agora temos que ajustar isso.
O segundo aplicativo.
Esse é agora o nosso aplicativo de linha de suprimentos e agora temos que usar o registro do APK para isso e, portanto,
ser corrigido.
Portanto, estamos corrigindo nossa versão corrigida modificada, o que é um pouco ridículo.
Mas, sim, acho que você ainda pode acompanhar esse caso por aqui.
Tudo bem.
E aqui temos agora nosso apk corrigido.
Este já foi assinado e podemos instalá-lo.
Acho que podemos substituir esse aplicativo porque a chave é apenas o mesmo teste.
Tudo bem.
Parece bom.
Agora vamos abrir nossa cópia de tela.
Nós a abrimos duas vezes.
Só precisamos de uma vez.
Está bem.
E agora vamos ver se deu certo.
Então, vamos abrir esse aplicativo de criptografia.
E o que deve acontecer é que devemos ver nosso texto e o sistema pontuar a linha de impressão.
Portanto, isso não deve ser afetado de forma alguma.
Vamos fazer esse adb logcat e pegar o sistema e talvez limpar isso primeiro.
Está bem.
Vamos fazer isso.
Está bem.
Mas além do sistema.
Portanto, além dessa saída da etapa anterior, também devemos vê-la agora diretamente nesse aplicativo.
Então vamos ver.
Estou abrindo em três e um.
Aqui está.
Essa é a minha mensagem secreta, e é exatamente isso que temos aqui.
Portanto, isso é um pouco mais conveniente de usar no momento, corrigindo ou usando exibições existentes para
imprimir nossos segredos.
Ou seja, essa não seria uma boa abordagem se você tivesse um desenvolvedor para imprimir os segredos na tela.
Mas se você for um hacker, com certeza é.
Direita.
Certo, perfeito.
Isso é tudo o que eu gostaria de mostrar a você aqui.
Isso pode ser muito útil.
E sim, espero que não tenha sido muito confuso.
Portanto, estou ansioso para vê-lo na próxima seção.