Como remover anúncios de um arquivo .apk de forma simples

Já se perguntou como funciona a reverse engineering em Android? Este artigo explora um exemplo prático de como modificar um aplicativo Android para remover anúncios indesejados. Descubra as ferramentas necessárias e o passo a passo para entender e alterar o código de um .apk, permitindo personalizar suas aplicações favoritas. Prepare-se para mergulhar no mundo da engenharia reversa e desvendar os segredos por trás dos seus apps!

Ferramentas Essenciais para Reverse Engineering em Android

Para começar a reverse engineering em Android, você precisará de algumas ferramentas chave. O JADX é fundamental para descobrir o código em Java, facilitando a leitura e compreensão do código original do aplicativo. Já o Apktool é essencial para editar o código em Smali, permitindo modificar o comportamento do app. E, por fim, o Android SDK build tools é necessário para comprimir e assinar o aplicativo modificado, garantindo que ele possa ser instalado novamente.

  • JADX: Para descobrir o código em Java.
  • Apktool: Para editar o código em Smali.
  • Android SDK build tools: Para comprimir e assinar o app.

Com essas ferramentas em mãos, você estará pronto para explorar e modificar aplicativos Android de forma eficaz. Lembre-se que a reverse engineering em Android pode ser complexa, mas com as ferramentas certas e um pouco de paciência, você pode aprender muito sobre o funcionamento interno dos seus apps favoritos.

O Processo Passo a Passo

O processo de reverse engineering em Android começa com a obtenção do arquivo .apk do aplicativo que você deseja modificar. Em seguida, você usará o JADX para descobrir o código Java, o Apktool para editar o código Smali, e o Android SDK build tools para reconstruir e assinar o aplicativo modificado. Vamos detalhar cada um desses passos para que você possa acompanhar e entender o processo completo.

Extraindo o .apk

O primeiro passo é obter o arquivo .apk do aplicativo que você deseja modificar. Uma forma de fazer isso é utilizando um aplicativo como o Apk Extractor Fastest & Suppor, disponível na Google Play Store. Com ele, você pode facilmente extrair o .apk do app desejado e prepará-lo para as próximas etapas.

Ao abrir o aplicativo Apk Extractor Fastest & Suppor, você poderá ver todos os aplicativos instalados no seu dispositivo e selecionar aquele que deseja extrair. Após a extração, o arquivo .apk estará disponível para ser utilizado nas próximas etapas do processo de reverse engineering em Android.

Descobrindo o Código Java

Com o arquivo .apk em mãos, o próximo passo é descobrir o código Java. Para isso, você utilizará o JADX, que permite abrir o .apk e visualizar o código Java de forma organizada e legível. Isso é fundamental para entender como o aplicativo funciona e identificar os pontos que você deseja modificar.

Ao abrir o .apk no JADX, você terá acesso à estrutura de arquivos do aplicativo, incluindo o AndroidManifest.xml, que contém informações importantes sobre o app, como as atividades (telas) e permissões. Além disso, você poderá explorar as classes Java e entender a lógica por trás de cada funcionalidade. Este é um passo crucial para planejar suas modificações.

Analisando o AndroidManifest.xml

O arquivo AndroidManifest.xml é um dos componentes mais importantes de um aplicativo Android. Ele contém informações essenciais sobre o app, como o nome do pacote, as atividades (telas), permissões e outros metadados. Ao analisar este arquivo, você pode obter insights valiosos sobre a estrutura e o funcionamento do aplicativo.

No exemplo em questão, o AndroidManifest.xml revela a existência de uma atividade chamada NoAdsActivity, que aparentemente está relacionada à remoção de anúncios. Essa descoberta é um ponto de partida interessante para investigar como o aplicativo lida com a exibição de anúncios e como podemos desativá-los.

Explorando a NoAdsActivity

A atividade NoAdsActivity parece ser o ponto chave para desativar os anúncios no aplicativo. Ao explorar o código Java dessa atividade no JADX, você pode encontrar a lógica responsável por verificar se o usuário possui a versão premium do app e, consequentemente, desativar os anúncios.

No código da NoAdsActivity, é possível identificar que o aplicativo verifica uma flag (indicador) em SharedPreferences para determinar se o usuário é premium. Se essa flag for verdadeira, os anúncios são desativados. Caso contrário, os anúncios são exibidos. Essa é uma vulnerabilidade que podemos explorar para remover os anúncios.

Modificando o Código Smali

Com o conhecimento adquirido sobre o funcionamento do aplicativo e a localização da lógica de exibição de anúncios, o próximo passo é modificar o código Smali para desativar os anúncios. Para isso, você utilizará o Apktool para descompilar o .apk e obter o código Smali, que é uma representação de baixo nível do código Java.

Extraindo e Alterando o Código Smali

Para extrair o código Smali, você utilizará o Apktool com o comando /opt/apktool/apktool d ApkExtractor_com.iraavanan.apkextractor.apk. Isso criará uma pasta com o código Smali do aplicativo, que você poderá abrir e editar com um editor de texto ou IDE como o Android Studio. O arquivo que nos interessa está em smali/com.iraavanan.apkextractor.ad.NoAdsActivity.smali.

Dentro do arquivo NoAdsActivity.smali, você procurará pela condição que verifica a flag de usuário premium em SharedPreferences. Essa condição geralmente envolve uma comparação (if-eqz) que decide se os anúncios devem ser exibidos ou não. Modificando essa condição, podemos forçar o aplicativo a sempre considerar o usuário como premium, desativando os anúncios.

Entendendo o Código Smali

O código Smali pode parecer intimidador à primeira vista, mas com um pouco de prática, é possível entender sua estrutura e lógica. Os comandos Smali são representações de baixo nível das instruções Java, e cada linha de código tem um significado específico. Para facilitar o entendimento, você pode consultar a documentação dos Dalvik opcodes, que descreve cada instrução Smali.

No exemplo em questão, a instrução if-eqz v0, :cond_2 verifica se o valor em v0 é igual a zero (falso). Se for, o programa pula para a etiqueta :cond_2, que provavelmente contém o código para exibir os anúncios. Modificando essa instrução, podemos alterar o fluxo do programa e desativar os anúncios.

Modificando a Condição

Para modificar a condição e forçar o aplicativo a sempre desativar os anúncios, você pode substituir a instrução move-result v0 por const/4 v0, 0x1. Isso fará com que a variável v0 sempre receba o valor 1 (verdadeiro), independentemente do valor original em SharedPreferences. Consequentemente, a condição if-eqz v0, :cond_2 sempre será falsa, e o programa nunca exibirá os anúncios.

Além disso, você pode adicionar a linha const/4 v0, 0x1logo após a instrução move-result v0. Isso garante que, independentemente do resultado original, v0 será sempre definido como 1, desativando os anúncios. Essa pequena alteração tem um grande impacto no comportamento do aplicativo.

Reconstruindo o .apk Modificado

Após modificar o código Smali, o próximo passo é reconstruir o arquivo .apk com as alterações. Para isso, você utilizará novamente o Apktool, que compilará o código Smali modificado e criará um novo .apk. Em seguida, você precisará comprimir e assinar o novo .apk para que ele possa ser instalado no seu dispositivo.

Empacotando e Assinando o .apk

Para reconstruir o .apk, execute o comando /opt/apktool/apktool b ApkExtractor_com.iraavanan.apkextractor -o apkextractor.apk. Isso criará um novo arquivo apkextractor.apk com as modificações que você fez no código Smali. Em seguida, você precisará comprimir o .apk com o comando zipalign -v -p 4 apkextractor.apk apkextractor_compressed.apk.

Por fim, você precisará assinar o .apk com uma chave para que ele possa ser instalado no seu dispositivo. Para isso, você pode usar o keytool para criar uma chave e o apksigner para assinar o .apk. Os comandos para isso são: keytool -genkeypair -v -keystore release-key.keystore -alias apkextractor -keyalg RSA -keysize 2048 e apksigner sign --ks release-key.keystore --ks-key-alias apkextractor --out apkextractor_signed.apk apkextractor_compressed.apk.

Instalando e Testando o Aplicativo Modificado

Com o .apk assinado, você pode finalmente instalar o aplicativo modificado no seu dispositivo. Antes de instalar, é importante remover a versão original do aplicativo com o comando adb uninstall com.iraavanan.apkextractor. Em seguida, instale a versão modificada com o comando adb install apkextractor_signed.apk.

Após a instalação, execute o aplicativo e verifique se as modificações foram aplicadas corretamente. No caso deste exemplo, você deverá verificar se os anúncios foram desativados. Se tudo correu bem, você terá um aplicativo sem anúncios, personalizado de acordo com suas necessidades.

Seguindo esses passos, você terá um aplicativo sem anúncios, mostrando o poder da reverse engineering em Android. Este processo permite que você personalize aplicativos e remova elementos indesejados, como anúncios, adaptando-os às suas preferências.

Este conteúdo foi auxiliado por Inteligência Artificiado, mas escrito e revisado por um humano.

Via Dev.to

Leave a Comment