Tutorial: extrair código fonte de uma aplicação Android | Coisas Úteis
content top

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:

code principal 300x138 Tutorial: extrair código fonte de uma aplicação Android

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

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

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

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

Extraia os arquivos do zip para a pasta criada.

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

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.

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

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

dex2jar\dex2jar.bat classes.dex

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

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:

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

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.

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

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:

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

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

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

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

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

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

E é isso! Simples?





Feed RSS dos comentários deste post TrackBack URL

Deixe um comentário

*


10 comentários »



  1. avatar
    Monnalisa escreveu:
    31 de outubro de 2014 as 17:37
    comment-top
    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.

    comment-bottom
  2. avatar comment-top
    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?

    comment-bottom
  3. avatar
    julia maria escreveu:
    24 de setembro de 2014 as 15:10
    comment-top
    Google Chrome 37.0.2062.120 Google Chrome 37.0.2062.120 Windows XP Windows XP

    muito bom

    comment-bottom
  4. avatar
    Gabriel escreveu:
    13 de agosto de 2014 as 23:55
    comment-top
    Opera 23.0.1522.72 Opera 23.0.1522.72 Windows 8.1 Windows 8.1

    Excelente tutorial

    comment-bottom
  5. avatar
    Lígia Silvestre escreveu:
    28 de agosto de 2013 as 22:45
    comment-top
    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.

    comment-bottom
  6. avatar comment-top
    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?

    comment-bottom
  7. avatar
    Everton escreveu:
    29 de abril de 2013 as 19:40
    comment-top
    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

    comment-bottom
  8. avatar comment-top
    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.

    comment-bottom
  9. avatar comment-top
    Firefox 19.0 Firefox 19.0 Windows 7 x64 Edition Windows 7 x64 Edition

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

    comment-bottom
  10. avatar comment-top
    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.

    comment-bottom