Como fazer engenharia reversa de UnCrackable-Level1.apk: um guia passo a passo
Você já se perguntou como um aplicativo funciona ou quais segredos ele esconde? Nesse caso, você pode estar interessado em engenharia reversa, que é o processo de análise do código, estrutura e funcionalidade de um aplicativo para entender como ele opera e o que faz. A engenharia reversa pode ajudá-lo a aprender novas habilidades, descobrir recursos ocultos ou até mesmo criar sua própria versão de um aplicativo.
Neste artigo, mostraremos como fazer a engenharia reversa do UnCrackable-Level1.apk, que é um desafio de engenharia reversa do OWASP (Open Web Application Security Project). Este desafio foi criado para testar seus conhecimentos e habilidades em aplicativos Android de engenharia reversa. Ele contém um segredo que você precisa descobrir usando várias ferramentas e técnicas. Vamos guiá-lo pelas etapas de engenharia reversa de UnCrackable-Level1.apk e revelar o segredo no final.
uncrackable-level 1.apk
O que é UnCrackable-Level1.apk e por que fazer engenharia reversa?
UnCrackable-Level1.apk é um desafio de engenharia reversa da OWASP
OWASP é uma organização sem fins lucrativos que visa melhorar a segurança de aplicações web. Eles fornecem vários recursos, como guias, padrões, ferramentas e desafios, para desenvolvedores, testadores e profissionais de segurança. Um de seus recursos é o Mobile Security Testing Guide (MSTG), que abrange vários aspectos do teste de segurança de aplicativos móveis.
O MSTG também inclui alguns crackmes, que são aplicativos projetados intencionalmente para serem quebrados ou hackeados. Esses crackmes são exercícios divertidos e educativos para aprender sobre segurança de aplicativos móveis e engenharia reversa. Um desses crackmes é o UnCrackable-Level1.apk, que é o primeiro nível de uma série de crackmes do Android. O objetivo deste crackme é encontrar um segredo escondido dentro do aplicativo.
A engenharia reversa pode ajudá-lo a aprender como um aplicativo funciona e encontrar segredos ocultos
A engenharia reversa não é útil apenas para crackear ou hackear aplicativos, mas também para aprender como eles funcionam e o que fazem. Ao fazer engenharia reversa de um aplicativo, você pode obter informações sobre seu código, estrutura, funcionalidade, lógica, algoritmos, dados e muito mais. Você também pode descobrir se o aplicativo possui vulnerabilidades, bugs ou recursos maliciosos.
A engenharia reversa também pode ajudá-lo a encontrar segredos ocultos em um aplicativo, como ovos de Páscoa, códigos de trapaça, senhas, chaves, tokens ou mensagens. Esses segredos podem ser escondidos intencionalmente pelos desenvolvedores para fins de diversão ou desafio, ou deixados para trás por engano ou descuido. Encontrar esses segredos pode ser recompensador e satisfatório para mentes curiosas.
Quais ferramentas você precisa para fazer engenharia reversa do UnCrackable-Level1.apk?
Você precisa de um dispositivo Android, um computador e algumas ferramentas de software
Para fazer a engenharia reversa do UnCrackable-Level1.apk, você precisará de um dispositivo Android, um computador e algumas ferramentas de software. O dispositivo Android pode ser um dispositivo físico ou um emulador, mas deve ser rooteado ou ter acesso root. O enraizamento é o processo de obter controle total sobre o seu dispositivo, o que permite modificar as configurações do sistema, instalar ROMs personalizados e executar comandos privilegiados. O enraizamento também pode ajudá-lo a ignorar alguns mecanismos de segurança que impedem a engenharia reversa de um aplicativo.
O computador pode ser qualquer sistema capaz de executar as ferramentas de software que usaremos para a engenharia reversa. Você pode usar Windows, Linux ou Mac OS, mas recomendamos o uso do Linux por sua facilidade de uso e compatibilidade com as ferramentas. Você também precisará de um cabo USB para conectar seu dispositivo Android ao computador.
As ferramentas de software incluem Frida, dex2jar, JD-GUI e apktool
As ferramentas de software que usaremos para a engenharia reversa UnCrackable-Level1.apk são Frida, dex2jar, JD-GUI e apktool. Essas ferramentas são gratuitas e de código aberto, e você pode baixá-las de seus sites ou repositórios oficiais.
Frida é um kit de ferramentas de instrumentação dinâmica que permite injetar código em um aplicativo em execução e modificar seu comportamento. Você pode usar o Frida para conectar funções, manipular dados, ignorar verificações e depurar aplicativos. O Frida consiste em dois componentes: um servidor que roda no dispositivo Android e um cliente que roda no computador. Você pode usar a API Python de Frida ou a interface de linha de comando para interagir com o aplicativo.
dex2jar é uma ferramenta que converte arquivos DEX (Dalvik Executable) do Android em arquivos JAR (Arquivo Java) do Java. Os arquivos DEX são os arquivos bytecode que contêm o código e os recursos do aplicativo. Os arquivos JAR são os arquivos compactados que contêm arquivos de classe Java e outros arquivos. Ao converter arquivos DEX em arquivos JAR, você pode descompilá-los e visualizar o código-fonte.
JD-GUI é uma interface gráfica do usuário para descompiladores Java. Um descompilador é uma ferramenta que reverte o processo de compilação e converte o bytecode de volta ao código-fonte. JD-GUI permite navegar e visualizar o código-fonte descompilado de arquivos de classe Java em um arquivo JAR.
apktool é uma ferramenta que desmonta e remonta arquivos Android APK (Pacote Android). Os arquivos APK são os arquivos de instalação que contêm o código, os recursos, o manifesto e a assinatura do aplicativo. O apktool pode decodificar o arquivo APK e extrair seu conteúdo para uma pasta. Ele também pode reconstruir o arquivo APK da pasta depois de fazer alterações.
Como fazer a engenharia reversa do UnCrackable-Level1.apk passo a passo?
Passo 1: Instale UnCrackable-Level1.apk no seu dispositivo Android
O primeiro passo é instalar o UnCrackable-Level1.apk no seu dispositivo Android. Você pode baixar o arquivo APK no site da OWASP ou no repositório GitHub. Para instalá-lo, você precisa habilitar a opção "Fontes desconhecidas" nas configurações do seu aparelho, que permite a instalação de apps de fontes diferentes da Google Play Store.
Depois de baixar o arquivo APK, você pode transferi-lo para o seu dispositivo usando um cabo USB ou um aplicativo gerenciador de arquivos. Em seguida, você pode tocar no arquivo APK e seguir as instruções para instalá-lo.Como alternativa, você pode usar a ferramenta adb (Android Debug Bridge) para instalá-lo em seu computador. adb é uma ferramenta de linha de comando que permite que você se comunique com seu dispositivo e execute várias tarefas. Para usar o adb, você precisa habilitar a opção "depuração USB" nas configurações do seu dispositivo, que permite depurar aplicativos no seu dispositivo.
Para instalar UnCrackable-Level1.apk usando adb, você precisa abrir um terminal ou prompt de comando em seu computador e navegar até a pasta onde você salvou o arquivo APK. Então, você precisa executar o seguinte comando:
adb install UnCrackable-Level1.apk
Este comando instalará UnCrackable-Level1.apk em seu dispositivo. Você deve ver uma mensagem dizendo "Sucesso" se a instalação for bem-sucedida.
Passo 2: Extraia o arquivo APK e converta-o em um arquivo JAR
A próxima etapa é extrair o arquivo APK e convertê-lo em um arquivo JAR. Isso nos permitirá descompilá-lo e visualizar o código-fonte. Para fazer isso, usaremos as ferramentas apktool e dex2jar em nosso computador.
Para extrair o arquivo APK usando apktool, precisamos abrir um terminal ou prompt de comando em nosso computador e navegar até a pasta onde salvamos o arquivo APK. Então, precisamos executar o seguinte comando:
apktool d UnCrackable-Level1.apk
Este comando decodificará o arquivo APK e criará uma pasta chamada "UnCrackable-Level1" no mesmo diretório. Essa pasta conterá o código, os recursos, o manifesto e outros arquivos do aplicativo.
Para converter o arquivo APK em um arquivo JAR usando dex2jar, precisamos abrir outro terminal ou prompt de comando em nosso computador e navegar até a pasta onde salvamos o arquivo APK. Então, precisamos executar o seguinte comando:
d2j-dex2jar UnCrackable-Level1.apk
Este comando converterá o arquivo APK em um arquivo JAR chamado "UnCrackable-Level1-dex2jar.jar" no mesmo diretório. Este arquivo JAR conterá o código do aplicativo em arquivos de classe Java.
Etapa 3: descompilar o arquivo JAR e analisar o código-fonte
A terceira etapa é descompilar o arquivo JAR e analisar o código-fonte.Isso nos ajudará a entender como o aplicativo funciona e o que ele faz. Para fazer isso, usaremos a ferramenta JD-GUI em nosso computador.
Para descompilar o arquivo JAR usando o JD-GUI, precisamos abrir o JD-GUI em nosso computador e clicar em "Arquivo" e depois em "Abrir arquivo". Em seguida, precisamos selecionar o arquivo JAR que criamos na etapa anterior. O JD-GUI exibirá o código-fonte descompilado do aplicativo em uma visualização em árvore. Podemos navegar e visualizar o código-fonte de diferentes classes e métodos.
Ao analisarmos o código-fonte, podemos notar algumas coisas interessantes. Por exemplo, podemos ver que o aplicativo tem uma classe chamada "sg.vantagepoint.uncrackable1.MainActivity", que é a atividade principal do aplicativo. Essa classe possui um método chamado "onCreate", que é executado quando o aplicativo é iniciado. Este método possui algum código que verifica se o dispositivo está enraizado ou se um depurador está conectado. Se qualquer uma dessas condições for verdadeira, ele mostrará uma mensagem de brinde dizendo "Rooting or Debugging Detected!" e sai do aplicativo.
Também podemos ver que o aplicativo possui uma classe chamada "sg.vantagepoint.a.c", que possui um método chamado "a", que recebe uma string como argumento e retorna um valor booleano. Este método parece ser o responsável por verificar se a entrada digitada pelo usuário está correta ou não. Ele faz alguns cálculos e comparações com alguns valores codificados e retorna verdadeiro ou falso de acordo.
Também podemos ver que o aplicativo tem uma classe chamada "sg.vantagepoint.a.a", que tem um método chamado "a", que não recebe argumentos e retorna um array de bytes. Este método parece ser o responsável por gerar ou armazenar o segredo que estamos procurando. Ele faz algumas operações com alguns valores codificados e retorna uma matriz de bytes que contém o segredo.
Passo 4: Use Frida para ignorar a detecção de raiz e verificação de depuração
A quarta etapa é usar o Frida para ignorar a detecção de raiz e a verificação de depuração que nos impede de executar ou depurar o aplicativo. Isso nos permitirá iniciar e interagir com o aplicativo sem problemas.Para fazer isso, usaremos a API Python de Frida e a interface de linha de comando em nosso computador.
Para usar Frida, precisamos ter certeza de que o servidor de Frida está rodando em nosso dispositivo Android e o cliente de Frida está rodando em nosso computador. Podemos baixar o servidor de Frida do site de Frida ou do repositório GitHub e copiá-lo para nosso dispositivo usando o adb ou um aplicativo gerenciador de arquivos. Em seguida, podemos executá-lo em nosso dispositivo usando um aplicativo emulador de terminal ou adb shell. Podemos baixar o cliente de Frida do site de Frida ou do Python Package Index (PyPI) e instalá-lo em nosso computador usando o pip ou outro gerenciador de pacotes.
Para ignorar a detecção de raiz e verificação de depuração usando Frida, precisamos abrir um terminal ou prompt de comando em nosso computador e executar o seguinte comando:
frida -U -f sg.vantagepoint.uncrackable1 --no-pause
Este comando iniciará UnCrackable-Level1.apk em nosso dispositivo usando Frida e anexará a ele sem pausar. Devemos ver uma mensagem dizendo "Gerado `sg.vantagepoint.uncrackable1`. Resuming main thread!" seguido por um prompt dizendo "[UnCrackable-Level1::sg.vantagepoint.uncrackable1]". Isso significa que agora estamos no modo interativo de Frida, onde podemos injetar código no [usuário do aplicativo e modificar seu comportamento.
Para ignorar a detecção de raiz e a verificação de depuração, precisamos injetar algum código que conecte os métodos que executam essas verificações e altere seus valores de retorno. Podemos usar a API Python de Frida para escrever um script que faça isso. Podemos salvar o script como um arquivo chamado "bypass.js" na mesma pasta onde temos o arquivo APK. O script pode ser mais ou menos assim:
// Carrega as classes do aplicativo Java.perform(function() // Obtém a classe MainActivity var MainActivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity"); // Engancha o método onCreate MainActivity.onCreate.overload("android.os.Bundle").implementation = function(bundle) // Chama o método original this.onCreate(bundle); // Imprime uma mensagem console.log("onCre ate hooked"); // Pega a classe a var a = Java.use("sg.vantagepoint.a.a"); // Pega o método a a.a.implementation = function() // Imprime uma mensagem console.log("Detecção de root bypassed"); // Retorna false ao invés de true return false; ; // Pega a classe b var b = Java.use("sg.vantagepoint.a.b"); // Pega o método a b.a.implementation = function() // Imprime uma mensagem console. log("Debug check bypassed"); // Retorna false ao invés de true return false; ; ; );
Esse script conecta o método onCreate da classe MainActivity e chama o método original. Em seguida, ele faz o hook dos métodos a das classes a e b, que são responsáveis por verificar se o dispositivo está enraizado ou se um depurador está conectado. Ele altera seus valores de retorno de true para false, o que significa que o dispositivo não está enraizado e nenhum depurador está conectado.
Para executar este script, precisamos digitar o seguinte comando no modo interativo de Frida:
%load bypass.js
Este comando carregará e executará o script. Devemos ver algumas mensagens dizendo "onCreate hooked", "Detecção de raiz ignorada" e "Verificação de depuração ignorada". Isso significa que contornamos com sucesso a detecção de raiz e a verificação de depuração. Agora podemos ver a tela principal do aplicativo, que nos pede para inserir um segredo.
Etapa 5: use Frida para conectar a função de verificação e revelar o segredo
A etapa final é usar Frida para conectar a função de verificação e revelar o segredo que estamos procurando. Isso nos permitirá descobrir qual entrada precisamos inserir para quebrar o aplicativo.Para fazer isso, usaremos a API Python de Frida e a interface de linha de comando em nosso computador.
Para conectar a função de verificação usando Frida, precisamos injetar algum código que conecte o método que realiza a verificação e imprima o segredo. Podemos usar a API Python de Frida para escrever um script que faça isso. Podemos salvar o script como um arquivo chamado "reveal.js" na mesma pasta onde temos o arquivo APK. O script pode ser mais ou menos assim:
// Carrega as classes do aplicativo Java.perform(function() // Obtém a classe c var c = Java.use("sg.vantagepoint.a.c"); // Engancha o método a c.a.overload("java.lang.String").implementation = function(s) // Chama o método original var result = this.a(s); // Imprime uma mensagem console.log("Verify function hooked"); // Obtém a classe a var a = Java.use("sg.vantagepoint. a.a"); // Chama o método a var secret = a.a(); // Converte o array de bytes em uma string var secretString = ""; for (var i = 0; i
Este script faz o hook do método a da classe c, que é responsável por verificar se o input digitado pelo usuário está correto ou não. Ele chama o método original e armazena seu resultado. Em seguida, ele chama o método a da classe a, que gera ou armazena o segredo. Ele converte a matriz de bytes retornada por esse método em uma string e a imprime. Finalmente, ele retorna o resultado original.
Para executar este script, precisamos digitar o seguinte comando no modo interativo de Frida:
%load revela.js
Este comando carregará e executará o script. Devemos ver uma mensagem dizendo "Verify function hooked" seguida por outra mensagem dizendo "The secret is: ..." com o segredo real. Isso significa que conectamos com sucesso a função de verificação e revelamos o segredo.Agora podemos inserir o segredo no campo de entrada do aplicativo e tocar no botão "Verificar". Devemos ver uma mensagem dizendo "Parabéns!" e uma mensagem de brinde dizendo "Este é o segredo correto". Isso significa que quebramos o aplicativo com sucesso.
Conclusão
Você fez engenharia reversa de UnCrackable-Level1.apk e aprendeu algumas técnicas
Neste artigo, mostramos como fazer engenharia reversa UnCrackable-Level1.apk, que é um desafio de engenharia reversa da OWASP. Usamos várias ferramentas e técnicas, como Frida, dex2jar, JD-GUI e apktool, para analisar o código, a estrutura e a funcionalidade do aplicativo. Também ignoramos a detecção de raiz e a verificação de depuração que nos impedem de executar ou depurar o aplicativo. Por fim, conectamos a função de verificação e revelamos o segredo que estávamos procurando.
Você pode aplicar essas técnicas a outros desafios de engenharia reversa ou aplicativos do mundo real
As técnicas que aprendemos neste artigo não se limitam a UnCrackable-Level1.apk. Você pode aplicá-los a outros desafios de engenharia reversa ou aplicativos do mundo real que deseja entender ou modificar. Obviamente, você sempre deve respeitar os direitos de propriedade intelectual e a privacidade dos desenvolvedores e usuários do aplicativo, e apenas fazer engenharia reversa de aplicativos para fins legítimos.
perguntas frequentes
O que é engenharia reversa?
A engenharia reversa é o processo de análise do código, estrutura e funcionalidade de um aplicativo para entender como ele opera e o que faz. A engenharia reversa pode ajudá-lo a aprender novas habilidades, descobrir recursos ocultos ou até mesmo criar sua própria versão de um aplicativo.
Quais são os benefícios da engenharia reversa?
Alguns dos benefícios da engenharia reversa são:
Ele pode ajudá-lo a aprender como um aplicativo funciona e o que ele faz.
Ele pode ajudá-lo a encontrar segredos ocultos em um aplicativo, como ovos de Páscoa, códigos de trapaça, senhas, chaves, tokens ou mensagens.
Ele pode ajudá-lo a encontrar vulnerabilidades, bugs ou recursos maliciosos em um aplicativo.
Ele pode ajudá-lo a criar sua própria versão de um aplicativo ou modificar seu comportamento.
Pode ajudá-lo a melhorar suas habilidades de resolução de problemas e pensamento crítico.
Quais são as questões legais da engenharia reversa?
A engenharia reversa pode envolver algumas questões legais, dependendo da licença do aplicativo, dos termos de serviço e da política de privacidade. Alguns aplicativos podem proibir ou restringir a engenharia reversa em seus contratos com os usuários. Alguns aplicativos também podem conter informações proprietárias ou confidenciais que pertencem aos desenvolvedores ou terceiros. A engenharia reversa desses aplicativos pode violar seus direitos de propriedade intelectual ou direitos de privacidade. Portanto, você deve sempre verificar os acordos e permissões do aplicativo antes de fazer engenharia reversa. Você também deve aplicar engenharia reversa apenas para fins legítimos e não para fins maliciosos ou ilegais.
Quais são alguns outros desafios ou recursos de engenharia reversa?
Alguns outros desafios ou recursos de engenharia reversa são:
: um guia abrangente para testes de segurança de aplicativos móveis que inclui alguns crackmes para Android e iOS.
: Um site que hospeda vários crackmes para diferentes plataformas e níveis de dificuldade.
: Uma série de postagens de blog que explicam como resolver alguns crackmes do Android usando diferentes ferramentas e técnicas.
: Um livro gratuito que ensina os fundamentos da engenharia reversa para várias plataformas e arquiteturas.
: Um subreddit que discute vários tópicos relacionados à engenharia reversa.
Como posso melhorar minhas habilidades de engenharia reversa?
Algumas das maneiras de melhorar suas habilidades de engenharia reversa são:
Prática: a melhor maneira de melhorar suas habilidades é praticar em diferentes aplicativos e desafios. Você pode usar os recursos mencionados acima ou encontrar seus próprios aplicativos para fazer engenharia reversa.
Aprenda: A segunda melhor maneira de melhorar suas habilidades é aprender com os outros.Você pode ler livros, blogs, artigos, tutoriais ou guias que explicam como fazer engenharia reversa de aplicativos usando diferentes ferramentas e técnicas. Você também pode assistir a vídeos, podcasts, webinars ou cursos que demonstram como fazer engenharia reversa de aplicativos.
Compartilhe: A terceira melhor maneira de melhorar suas habilidades é compartilhar seu conhecimento e experiência com outras pessoas. Você pode escrever blogs, artigos, tutoriais ou guias que explicam como você fez engenharia reversa de um aplicativo e o que aprendeu com ele. Você também pode criar vídeos, podcasts, webinars ou cursos que demonstrem como você fez engenharia reversa de um aplicativo. Você também pode participar de comunidades online, fóruns ou grupos que discutem engenharia reversa e fazem perguntas, respondem a perguntas ou dão feedback.
Ao praticar, aprender e compartilhar, você pode melhorar suas habilidades de engenharia reversa e se tornar um engenheiro reverso melhor. 0517a86e26
Comments