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?

Gustavo

21 Comments

  1. Google Chrome 21.0.1180.89 Google Chrome 21.0.1180.89 Windows 7 Windows 7

    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.

  2. Firefox 19.0 Firefox 19.0 Windows 7 x64 Edition Windows 7 x64 Edition

    pow, não consegui gerer o arquivo classes_dex2jar.jar

  3. Firefox 20.0 Firefox 20.0 Windows 7 Windows 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.

  4. Google Chrome 27.0.1453.65 Google Chrome 27.0.1453.65 Windows XP Windows XP

    Olá, depois disso tudo, como eu faço para recompilar o XML junto com o JAVA?
    Obrigado.

    Obs: Muito bom seu tutorial

  5. Google Chrome 28.0.1500.95 Google Chrome 28.0.1500.95 Windows 7 x64 Edition Windows 7 x64 Edition

    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?

  6. Google Chrome 28.0.1500.95 Google Chrome 28.0.1500.95 Windows 7 Windows 7

    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.

  7. Google Chrome 38.0.2125.104 Google Chrome 38.0.2125.104 Windows 8.1 x64 Edition Windows 8.1 x64 Edition

    O Ultimo comando não funcionou
    apktool d teste.apk

    “Input file (teste.apk) was not found or was not readable.”

    Ajuda?

  8. Google Chrome 38.0.2125.111 Google Chrome 38.0.2125.111 Windows 8 x64 Edition Windows 8 x64 Edition

    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.

  9. Google Chrome 43.0.2357.65 Google Chrome 43.0.2357.65 Windows 7 Windows 7

    Amigo ql arquivo jar eu baixo?

  10. Google Chrome 43.0.2357.81 Google Chrome 43.0.2357.81 Windows 8.1 x64 Edition Windows 8.1 x64 Edition

    Bom Tuto!

  11. Google Chrome 43.0.2357.130 Google Chrome 43.0.2357.130 Windows 7 x64 Edition Windows 7 x64 Edition

    o meu APK não tem os arquivos: dex2jar.bat classes.dex

  12. Google Chrome 45.0.2454.101 Google Chrome 45.0.2454.101 Windows 10 Windows 10

    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!!!

  13. Firefox 42.0 Firefox 42.0 Windows 7 Windows 7

    apktoll link off, restaura ae mano, to precisando vizualizar um Android Manifest.xml

  14. Google Chrome 48.0.2564.109 Google Chrome 48.0.2564.109 Windows 8 x64 Edition Windows 8 x64 Edition

    também não consegui criar o arquivo. se alguém resolveu sem ser pelo modo indicado, avise!

  15. Google Chrome 48.0.2564.116 Google Chrome 48.0.2564.116 Windows 8.1 x64 Edition Windows 8.1 x64 Edition

    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! 🙁

  16. Google Chrome 51.0.2704.103 Google Chrome 51.0.2704.103 Windows 7 x64 Edition Windows 7 x64 Edition

    Cara,
    Da para eu ver o código de um Game existente no Google Play e depois criar um Mod por exemplo?

  17. Google Chrome 45.0.2454.94 Google Chrome 45.0.2454.94 Android 6.0 Android 6.0

    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) ??

Leave a Reply

Your email address will not be published. Required fields are marked *