top of page
Search
leonroucoulet980zg

Apktool-2: ferramenta para modificar apks



Apktool-2: uma ferramenta poderosa para aplicativos Android de engenharia reversa




Se você é um desenvolvedor, modder ou entusiasta do Android, deve ter ouvido falar do Apktool, uma ferramenta popular para descompilar e recompilar arquivos APK do Android. O Apktool permite que você acesse o código-fonte e os recursos de qualquer aplicativo Android, modifique-os e reconstrua-os em um novo arquivo APK. Isso pode ser útil para várias finalidades, como analisar a funcionalidade do aplicativo, adicionar novos recursos, remover componentes indesejados, alterar a aparência do aplicativo ou corrigir bugs.


Neste artigo, apresentaremos o Apktool-2, a versão mais recente do Apktool, que possui muitas melhorias e correções de bugs em relação às versões anteriores. Também mostraremos como instalar e usar o Apktool-2 para decodificar e recompilar aplicativos Android, bem como alguns problemas e soluções comuns. Por fim, compararemos o Apktool-2 com algumas outras ferramentas para engenharia reversa de aplicativos Android e destacaremos seus prós e contras.




apktool-2




O que é o Apktool-2 e por que usá-lo?




O Apktool-2 é uma ferramenta para engenharia reversa de aplicativos Android binários fechados de terceiros. Ele pode decodificar recursos para uma forma quase original e reconstruí-los depois de fazer algumas modificações. Também facilita o trabalho com um aplicativo devido à estrutura de arquivo semelhante a um projeto e à automação de algumas tarefas repetitivas, como criar APKs etc.


Apktool-2 é desenvolvido por ibotpeaches, um conhecido desenvolvedor na comunidade XDA. A ferramenta atingiu a versão 2.4 em março de 2019, com muitas correções de bugs e alterações. Alguns dos recursos e benefícios notáveis do Apktool-2 são:


  • Ele suporta AAPT1 e AAPT2 (Android Asset Packaging Tool), que são usados para compilar e empacotar recursos do Android.



  • Ele pode decodificar a maioria dos aplicativos Android em smali, que é uma linguagem intermediária para Dalvik bytecode. O Smali pode então ser convertido para Java para facilitar a análise.



  • Ele pode lidar com vários tipos de recursos, como XML, imagens, imagens de 9 patches, layouts, menus, animações, etc.



  • Ele pode lidar com diferentes versões de SDKs e estruturas do Android.



  • Ele pode lidar com aplicativos ofuscados ou criptografados.



  • Ele possui uma interface de linha de comando, bem como uma interface gráfica do usuário (GUI) para conveniência.



  • É de código aberto e de uso gratuito.



Instalação e uso do Apktool-2




Para instalar o Apktool-2 no seu computador, você precisará dos seguintes pré-requisitos:


  • Um Java Runtime Environment (JRE) ou um Java Development Kit (JDK).



  • Um Android SDK instalado no seu computador.



  • O arquivo apktool.jar baixado de .



  • O arquivo apktool.bat (para Windows) ou o script apktool (para Linux/Mac) baixado de .



Para instalar o Apktool-2, siga estas etapas:


  • Copie o arquivo apktool.jar para uma pasta em seu computador (por exemplo, C:\apktool).



arquivo tool.jar.


  • Adicione a pasta onde você copiou os arquivos apktool à variável PATH do seu sistema. Isso permitirá que você execute o apktool de qualquer diretório.



  • Abra um prompt de comando ou um terminal e digite apktool para verificar se está instalado corretamente. Você deve ver uma mensagem de ajuda com as opções e comandos disponíveis.



Para usar o Apktool-2, você precisará de um arquivo APK que deseja decodificar ou recompilar. Você pode obter um arquivo APK de várias fontes, como baixá-lo da Google Play Store, extraí-lo do seu dispositivo usando o ADB ou localizá-lo online. No entanto, tenha cuidado para não violar nenhum direito de propriedade intelectual ou termos de serviço ao obter arquivos APK.


Como decodificar e recompilar aplicativos Android com Apktool-2




Depois de instalar o Apktool-2 e um arquivo APK pronto, você pode começar a decodificar e recompilar aplicativos Android com o Apktool-2. Nesta seção, mostraremos como fazer isso usando a linha de comando e a interface GUI.


Decodificando um arquivo APK




Decodificar um arquivo APK significa extrair seu conteúdo em uma pasta que contém o código-fonte, recursos, manifesto, certificados e outros arquivos.Isso permitirá que você visualize e modifique os componentes do aplicativo usando seu editor de texto ou IDE preferido.


Usando a linha de comando




Para decodificar um arquivo APK usando a linha de comando, siga estas etapas:


  • Navegue até a pasta onde você tem o arquivo APK que deseja decodificar (por exemplo, C:\apkfiles).



  • Digite apktool d -o . Por exemplo, apktool d myapp.apk -o myapp_decoded. Isso criará uma pasta chamada myapp_decoded no mesmo diretório do arquivo APK e extrairá seu conteúdo lá.



  • Aguarde o término do processo. Você deve ver uma mensagem dizendo "I: Using Apktool 2.x.x on " e "I: Copiando assets e libs..." seguido de "I: Copiando arquivos desconhecidos..." e "I: Copiando arquivos originais...". Finalmente, você deve ver uma mensagem dizendo "I: Construído apk..."



  • Abra a pasta de saída e explore seu conteúdo. Você deve ver uma estrutura de pastas semelhante a esta:



myapp_decoded AndroidManifest.xml apktool.yml assets build lib original res smali


As pastas mais importantes são:


  • AndroidManifest.xml: Este é o arquivo de manifesto do aplicativo, que contém informações sobre o nome do aplicativo, versão, permissões, atividades, serviços, etc.



  • assets: Esta pasta contém todos os arquivos que não são compilados em recursos, como fontes, sons, vídeos, etc.



  • lib: esta pasta contém todas as bibliotecas nativas usadas pelo aplicativo, como arquivos .so.



  • original: Esta pasta contém a pasta META-INF original do arquivo APK, que contém os certificados e assinaturas do app.



  • res: Esta pasta contém todos os recursos do app, como arquivos XML, imagens, imagens 9-patch, layouts, menus, animações, etc.



  • smali: Esta pasta contém todo o código fonte do app no formato smali, que é uma linguagem intermediária para Dalvik bytecode. Cada arquivo smali corresponde a uma classe Java no aplicativo.



Usando a interface GUI




Se você preferir uma interface gráfica do usuário em vez da linha de comando, pode usar Apktool-2 GUI, que é um wrapper para Apktool-2 que fornece uma interface simples e intuitiva para decodificar e recompilar arquivos APK. Para usar Apktool-2 GUI, siga estas etapas:


  • Faça o download da GUI do Apktool-2 em .



  • Extraia o arquivo zip para uma pasta no seu computador (por exemplo, C:\apktoolgui).



  • Execute Apktool_2.x.x_GUI.jar clicando duas vezes nele ou usando java -jar Apktool_2.x.x_GUI.jar em um prompt de comando ou terminal.



  • Você deve ver uma janela como esta:



![Apktool-2 GUI]


  • Selecione o arquivo APK que deseja decodificar clicando no botão "Selecionar APK" e navegando até sua localização.



  • Selecione a pasta de saída onde deseja salvar os arquivos decodificados clicando no botão "Selecionar saída" e navegando até seu local.



  • Clique no botão "Decodificar APK" para iniciar o processo de decodificação. Você deve ver uma barra de progresso e uma janela de log mostrando a saída do Apktool-2.



  • Aguarde o término do processo. Você deve ver uma mensagem dizendo "APK decodificado com sucesso" e um ícone de pasta que abre a pasta de saída quando clicado.



  • Abra a pasta de saída e explore seu conteúdo. Você deve ver uma estrutura de pastas semelhante à descrita na seção anterior.



Recompilando um arquivo APK




Recompilar um arquivo APK significa criar um novo arquivo APK a partir dos arquivos decodificados que você modificou. Isso permitirá que você teste suas alterações em seu dispositivo ou emulador ou compartilhe seu aplicativo modificado com outras pessoas.


Fazendo modificações nos arquivos decodificados




Antes de recompilar um arquivo APK, você precisa fazer algumas modificações nos arquivos decodificados de acordo com suas necessidades e preferências. Você pode usar qualquer editor de texto ou IDE que suporte XML e destaque e edição de sintaxe pequena, como Notepad++, Sublime Text, Visual Studio Code, Android Studio, etc.


Algumas das modificações comuns que você pode fazer são:


  • Alteração do nome, ícone, versão, nome do pacote, permissões etc. do aplicativo no arquivo AndroidManifest.xml.



  • Alterar a aparência, layout, cores, fontes, imagens etc. do aplicativo na pasta res.



  • Alterar a funcionalidade, lógica, algoritmos, variáveis, métodos, classes, etc. do aplicativo na pasta smali.



  • Adicionar ou remover quaisquer arquivos ou pastas que você deseja ou não no aplicativo.



No entanto, tenha cuidado para não fazer alterações que possam interromper a funcionalidade ou a compatibilidade do aplicativo, como excluir arquivos ou pastas essenciais, alterar valores ou constantes importantes, renomear ou excluir classes ou métodos referenciados em outro lugar, etc. Além disso, esteja ciente de quaisquer implicações legais ou éticas de modificar um aplicativo que não é seu.


Construindo o arquivo APK




Depois de fazer as modificações nos arquivos decodificados, você pode criar um novo arquivo APK a partir deles usando o Apktool-2. Para fazer isso, siga estas etapas:


Usando a linha de comando




  • Navegue até a pasta onde você tem os arquivos decodificados que deseja recompilar (por exemplo, C:\apkfiles\myapp_decoded).



  • Digite apktool b . Por exemplo, apktool b myapp_decoded. Isso criará um novo arquivo APK chamado myapp_decoded.apk em uma subpasta chamada dist dentro da pasta de saída.



  • Aguarde o término do processo. Você deve ver uma mensagem dizendo "I: Usando Apktool 2.x.x" e "I: Verificando se as fontes foram alteradas ..." seguido por "I: Smaling smali folder into classes.dex..." e "I: Building resources...". Finalmente, você deve ver uma mensagem dizendo "I: Built apk ..."



  • Abra a subpasta dist e encontre seu novo arquivo APK. Você pode renomeá-lo se quiser.



Usando a interface GUI




  • Execute Apktool_2.x.x_GUI.jar clicando duas vezes nele ou usando java -jar Apktool_2.x.x_GUI.jar em um prompt de comando ou terminal.



  • Você deve ver uma janela como esta:



![Apktool-2 GUI]


  • Selecione a pasta onde você tem os arquivos decodificados que deseja recompilar clicando no botão "Selecionar projeto" e navegando até sua localização.



  • Selecione a pasta de saída onde deseja salvar o novo arquivo APK clicando no botão "Selecionar saída" e navegando até seu local.



  • Clique no botão "Build APK" para iniciar o processo de recompilação. Você deve ver uma barra de progresso e uma janela de log mostrando a saída do Apktool-2.



  • Aguarde o término do processo. Você deve ver uma mensagem dizendo "APK construído com sucesso" e um ícone de pasta que abre a pasta de saída quando clicado.



  • Abra a pasta de saída e encontre seu novo arquivo APK. Você pode renomeá-lo se quiser.



Solução de problemas e erros comuns




Às vezes, você pode encontrar alguns erros ou problemas ao decodificar ou recompilar arquivos APK com o Apktool-2. Aqui estão alguns dos mais comuns e como corrigi-los:



Erro/ProblemaSolução


"Exceção no thread "principal" brut.androlib.AndrolibException: não foi possível decodificar o arquivo arsc"Isso significa que o Apktool-2 não conseguiu decodificar o arquivo resources.arsc, que contém informações sobre os recursos do aplicativo. Isso pode ocorrer devido a vários motivos, como criptografia, ofuscação ou corrupção do arquivo. Para corrigir isso, você pode tentar usar uma versão diferente do Apktool-2 ou usar outra ferramenta como Jadx para decodificar o arquivo APK.


"Exceção no thread "principal" brut.androlib.AndrolibException: brut.common.BrutException: não foi possível executar (código de saída = 1)"Isso significa que o Apktool-2 não pode executar um comando, como aapt ou zipalign, que são usados para compilar e empacotar os recursos. Isso pode ocorrer devido a vários motivos, como dependências ausentes ou incompatíveis, variável PATH incorreta ou permissões insuficientes. Para corrigir isso, você pode tentar instalar ou atualizar as dependências necessárias, como Java, Android SDK etc., ou verificar as configurações e permissões do sistema.


"Falha na instalação com a mensagem Falha ao estabelecer sessão"Isso significa que o Apktool-2 não pôde instalar o novo arquivo APK em seu dispositivo ou emulador. Isso pode ocorrer devido a vários motivos, como um certificado ou assinatura inválida ou incompatível, uma versão do Android ou nível de SDK incompatível ou um arquivo APK corrompido.Para corrigir isso, você pode tentar assinar o arquivo APK com um certificado ou assinatura válido, usando uma versão do Android ou nível de SDK apropriado para seu dispositivo ou emulador, ou reconstruir o arquivo APK com Apktool-2.


Se você encontrar quaisquer outros erros ou problemas que não estejam listados aqui, tente pesquisar soluções on-line, pedindo ajuda em fóruns como XDA ou Stack Overflow ou relatando-os em do Apktool-2.


Apktool-2 alternativas e comparações




Apktool-2 não é a única ferramenta para aplicativos Android de engenharia reversa. Existem muitas outras ferramentas que oferecem recursos e funcionalidades semelhantes ou diferentes. Nesta seção, apresentaremos alguns deles e os compararemos com o Apktool-2.


Outras ferramentas para aplicativos Android de engenharia reversa




Aqui estão algumas das outras ferramentas que você pode usar para aplicativos Android de engenharia reversa:


jadx




Jadx é uma ferramenta para descompilar aplicativos Android em código-fonte Java. Ele também pode converter bytecode Dalvik em gráficos pequenos e de pontos. O Jadx possui uma interface de linha de comando, bem como uma interface gráfica do usuário (GUI) que permite navegar e pesquisar o código descompilado. O Jadx é de código aberto e de uso gratuito.


Dex2jar




Dex2jar é uma ferramenta para converter aplicativos Android em arquivos Java .jar. Ele também pode converter bytecode Dalvik em arquivos .class smali e Java. Dex2jar possui apenas uma interface de linha de comando. O Dex2jar é de código aberto e gratuito.


Frida




Frida é uma ferramenta para análise dinâmica e manipulação de aplicativos Android. Ele permite que você injete seu próprio código no processo do aplicativo e modifique seu comportamento em tempo de execução. Frida tem uma interface de linha de comando, bem como uma API Python que permite escrever scripts e plugins para Frida. Frida é de código aberto e de uso gratuito.


Prós e contras de Apktool-2 vs outras ferramentas




Cada ferramenta tem suas próprias vantagens e desvantagens quando se trata de aplicativos Android de engenharia reversa. Aqui estão alguns dos prós e contras do Apktool-2 em comparação com as outras ferramentas:



FerramentaPrósContras


Apktool-2- Suporta AAPT1 e AAPT2- Pode lidar com vários tipos de recursos- Pode lidar com aplicativos ofuscados ou criptografados- Tem uma interface GUI- Não é possível descompilar smali para Java- Não é possível injetar código ou modificar aplicativos em tempo de execução- Pode encontrar erros ou problemas com alguns aplicativos


jadx- Pode descompilar smali para Java- Pode converter bytecode Dalvik em gráficos pequenos e de pontos- Possui uma interface GUI que permite navegar e pesquisar o código- Não é possível recompilar Java para smali ou APK- Não é possível lidar com recursos ou arquivos de manifesto- Pode produzir código Java impreciso ou incompleto


Dex2jar- Pode converter arquivos smali para Java .jar- Pode converter bytecode Dalvik em arquivos smali e Java .class- Não é possível recompilar Java para smali ou APK- Não é possível lidar com recursos ou arquivos de manifesto- Pode produzir código Java impreciso ou incompleto


Frida- Pode injetar código ou modificar aplicativos em tempo de execução- Pode escrever scripts e plugins para Frida usando Python API- Não é possível decodificar ou recompilar arquivos APK- Não é possível lidar com recursos ou arquivos de manifesto- Requer acesso root ou um dispositivo Android corrigido


Conclusão e perguntas frequentes




Neste artigo, apresentamos a você o Apktool-2, uma ferramenta poderosa para engenharia reversa de aplicativos Android. Mostramos como instalar e usar o Apktool-2 para decodificar e recompilar arquivos APK, bem como alguns erros e soluções comuns. Também comparamos o Apktool-2 com algumas outras ferramentas para aplicativos Android de engenharia reversa e destacamos seus prós e contras.


Esperamos que este artigo tenha sido útil e informativo para você. Se você tiver alguma dúvida ou feedback, sinta-se à vontade para deixar um comentário abaixo. Aqui estão algumas perguntas frequentes que você pode achar úteis:


perguntas frequentes




  • P: O Apktool-2 é legal?R: O Apktool-2 é legal, desde que você o use apenas para fins educacionais ou pessoais e não viole nenhum direito de propriedade intelectual ou termos de serviço dos proprietários ou desenvolvedores do aplicativo.No entanto, diferentes países podem ter leis diferentes em relação à engenharia reversa, portanto, verifique as leis locais antes de usar o Apktool-2.



  • P: O Apktool-2 é seguro?R: O Apktool-2 é seguro, desde que você o baixe de , e verifique suas somas de verificação ou assinaturas. No entanto, tenha cuidado para não baixar nenhum arquivo APK malicioso ou modificar arquivos confidenciais que possam danificar seu dispositivo ou dados.



  • P: Como posso assinar o arquivo APK depois de recompilá-lo?R: Você pode assinar o arquivo APK usando várias ferramentas, como jarsigner, apksigner, zipalign, etc. , que é uma ferramenta simples para assinar arquivos APK com um certificado de teste.



  • P: Como posso instalar o arquivo APK no meu dispositivo ou emulador?R: Você pode instalar o arquivo APK usando vários métodos, como ADB, Android Studio, Gerenciador de Arquivos, etc. , que é uma ferramenta simples para instalar arquivos APK em seu dispositivo ou emulador.



onde você pode encontrar a documentação, o código-fonte, o changelog, os problemas e os lançamentos do Apktool-2. Você também pode participar do Apktool-2, onde você pode conversar com outros usuários e desenvolvedores do Apktool-2.


0517a86e26


0 views0 comments

Recent Posts

See All

Comments


bottom of page