Tutorial: extrair código fonte de uma aplicação Android


Este tutorial ensina como extrair o código fonte e os resources (layout, imagens, etc) de uma aplicação Android publicada no Google Play (Android Market).

Você deve usar esse tutorial para extrair informações de sua própria aplicação, caso por algum motivo tenha perdido o código fonte, e não para “roubar” código fonte de outras aplicações. Respeite os direitos autorais dos desenvolvedores.

O primeiro passo é conseguir o arquivo compilado (formato .apk) da aplicação Android. Você pode conseguir isso de várias maneiras, como por exemplo, procurando o arquivo para download na internet ou fazendo backup da aplicação para o SDCard (se você possui root no seu aparelho você pode utilizar o Titanium Backup.

Para comparamos o código, criei a aplicação CoisasUteis com a seguinte estrutura e código:

Crie uma pasta e copie o arquivo .apk para ela.

Adicione a extensão “.zip” no final do arquivo.

Extraia os arquivos do zip para a pasta criada.

Neste estágio você já poderá ver todas as imagens da aplicação, normalmente dentro das subpastas “drawables” da pasta “res”.  Você ainda não consegue ler os xmls e o código java.

Faça download do dex2jar, extraia para a pasta dex2jar.

Abra o Prompt de Comando, acesse a pasta onde os arquivos do zip foram extraidos e digite:

dex2jar\dex2jar.bat classes.dex


O arquivo classes_dex2jar.jar será criado. Abra ele com o programa JD-GUI (http://java.decompiler.free.fr/?q=jdgui) e você poderá ver o código fonte da aplicação:

Se o código não estiver legível como neste exemplo, é porque o desenvolvedor obfuscou o código fonte antes de compilar. Para saber como fazer isso leia sobre o ProGuard.

Para fazer engenharia reversa dos arquivos xml da aplicação, faça download do APKTool. São dois arquivos, apktoolx.x.x.tar.bz2 e apktool-install-windows-rxx-brutx.tar.bz2. Extraia ambos para apasta apktool. Faça download do arquivo framework-res.apk procurando no Google ou tente neste link. Coloque o arquivo também na pasta apktool.

Abra o Prompt de Comando, acesse a pasta apktool e digite:

apktool if framework-res.apk

Copie o arquivo .apk original da sua aplicação na pasta apktool:

Abra o Prompt de Comando, acesse a pasta apktool e digite o comando abaixo, trocando CoisasUteis pelo nome da seu arquivo:

apktool d CoisasUteis.apk

Uma pasta com o nome da sua aplicação será criada:

Dentro dela você terá acesso a todos os arquivos xml, como os de layout, menus, strings, styles, etc.

E é isso! Simples?

22 Comments

  1. Gostei das dicas..
    Mas uma dúvida, posso esse tutorial para retirar qualquer fonte de qualquer app pra usar como base do meu app (tipo fazer modificações) ??

  2. Site mais nojento! não importa se o conteúdo é bom ou não! só o fato de toda hora ficar aparecendo essa merda de caixa com um time, me irritou e saí desta merda, sem sequer ler o conteúdo! 🙁

  3. Amigo eu tb não consegui criar o arquivo (dex2jar.bat classes.dex) infelizmente. o maior problema está sendo esse. Agradecemos ai a quem tem outra forma de cria-lo. Tutorial tão bom, mas quando estamos aprendendo sempre há dúvidas mesmo. Aguardo uma ajuda…obrigado!!!

  4. Valeu ajudou bastante, mas tive alguns problemas por isso vou logo avisar aqui que alguem pode ter problema por não ter o JAVA instalado na sua máquina então para verificar isso entre no Prompt de Comando e digite:
    javac -verson

    então vc vai saber se tem o java, quando for exibido a mensagem dizendo a versão que esta no seu pc.

    qualquer duvida seguir esse tutorial: http://www.loiane.com/2013/02/instalando-e-configurando-o-java-no-windows-8/

    outro problema foi pq não eh especificado em qual pasta deve esta o Prompt de Comando para criar o arquivo classes.dex. Então faça como Endo, falou. clique na pasta dex2jar com o botao direito e segurando o shift, quando aparecer uma janela com as opcões vc clica na (abrir janela de comando aqui), ai o prompt de comando abre na janela correta então e so digitar (dex2jar.bat classes.dex), sem os parenteses. se ocorrer problema ainda copie o arquivo classes.dex da pasta do projeto e cole dentro da dex2jar e execute o comando dex2jar.bat classes.dex novamente.

  5. Fiz como colocado aqui, porém o arquivo classes.dex estava dentro da pasta do app e nao do dex2jar. Transferi o arquivo para a pasta dex2jar e funcionou.

  6. Fiz todos os passos, extraí o código, mudei somente algumas imagens tomando o cuidado para deixar todas com as mesmas dimensões e propriedades das originais, só não consegui após re-criar o aplicativo, mesmo assinando de outra forma ou deixando a assinatura como estava, não consegui instalar o aplicativo em meu celular, mesmo tendo habilitado para ele aceitar aplicativos de fontes desconhecidas. O que pode ser?

  7. Foi meio ruim mas consegui gera o arquivo classes_dex2jar.jar, deve ser um buj no win7.
    Abre a pasta onde esta o arquivo apertando shift e botão direito em cima da pasta, ai sim vc digita (dex2jar.bat classes.dex)
    Resumendo:
    clik com o botão direito na pasta dex2jar lembre de segura o shift quando aparecer uma janela com varias opcões vc clik na (abri janela de comando aqui), ai o pront de comando já abre na janela serta então e so digitar (dex2jar.bat classes.dex), sem os parenteses.
    O tutorial foi muito bom, consegui tudo que queria, vlw mesmo.

  8. Amigo estou tendo erro, na parte onde ele criaria o arquivo classes_dex2jar.jar o CMD volta um erro e não procede, segui os passos corretamente você poderia me ajudar?

    Desde já agradeço.

Leave a Reply

Seu e-mail não será publicado.


*