engenharia reversa de pacotes apk (android)

Caso de Uso:
Tenho um apk, gostaria de olhar dentro de um pacote e dar uma olhada como originalmente ele foi montado. Olhando por exemplo o AndroidManifest.xml dele, ou seus recursos (pasta /res).

Resposta:
Vc pode fazer isso usando o apktool ou simplesmente descompactando o pacote. O apk é um zip file, se renomear e descompactar o efeito é semelhante ao apktool, no entanto, o AndroidManifest.xml não será legível. Portanto, caso queira bisbilhotar com mais detalhes, use o apktool.

Como usar o apktool?
O apktool está disponível em [1] http://code.google.com/p/android-apktool/
Baixe o jar file e o executavel (command shell).

para rodar: apktool d -f <nome_do_apk>


Ele criará uma pasta no local aonde se encontra o apk, vc encontrará o manifes praticamente intacto, e poderá olhar inclusive os layouts e as strings utilizadas no pacote.




Alternativamente, se vc descompactar usando um descompactador comercial, o efeito é semelhante:



No entanto, eu não consegui achar a pasta values, nem ler legivelmente o Manifest.

Olhar como foi montado é especialmente interessante caso vc queira ver por exemplo quais qualifiers o seu telefone suporta. Se você quiser saber quais línguas a aplicação Settings dos seu telefone possui, vale a pena tentar a aplicação Custom Locale Dev Tools [5] lembrando que é necessário saber rodar alguns comandos via adb shell.
Qualifiers são características e incluem uma informação específica de display (mdpi, xhdpi) ou ainda informações sobre quais línguas o telefone suporta nativamente, por exemplo: es-US, pt-BR.

Toda essa informação é pública e encontra-se disponível em developer.android.com

[post revisado em Janeiro de 2015].

Referências:
[1] apk tool - http://code.google.com/p/android-apktool/
[2] localization basics - http://developer.android.com/guide/topics/resources/localization.html
[3] more basics on supporting languages - http://developer.android.com/training/basics/supporting-devices/languages.html 
[4] http://developer.android.com/about/versions/android-2.0.html

Posts Populares

DISCLAIMER / AVISO

This is my personal blog to expose and exchange ideas. It DOES NOT REFLECT the view of my employers.

Este blog é pessoal e foi criado para compartilhar idéias. Ele NÃO REFLETE o ponto de vista de meus empregadores.