URL:

Opção :




COMO FAZER ENGENHARIA REVERSA EM APLICATIVOS ANDROID

Como fazer Engenharia Reversa no APK

Com Como fazer Engenharia Reversa no APK

Com o apk em mãos (independente se usou o TitaniumBackup ou baixou o APK da Internet), você pode trocar sua extensão para .ZIP e dezipá-lo em uma pasta. Sim, o APK é apenas uma pasta compactada. Dentro da nova pasta, estará toda a estrutura de diretórios do projeto do aplicativo, incluindo os arquivos estáticos (assets), os recursos (resources) e as classes Java, que estão compiladas em um arquivo binário chamado classes.dex. .DEX é a extensão do arquivo executável entendido pela máquina virtual Dalvik, do Android. Para poder lê-lo, primeiro temos de convertê-lo para o executável do Java tradicional, o .JAR.

Para converter arquivos DEX para JAR, recomendo a utilização do Dex2Jar, um projeto open-source hospedado no Google Code (página do projeto). Muito simples de usar, copie o classes.dex pra mesma pasta do Dex2Jar, abra o prompt do DOS, navegue até o diretório do Dex2Jar e execute o comando (sem aspas) "dex2jar.bat classes.dex" e ele criará um classes_dex2jar.jar. Para abrir o arquivo JAR, basta trocar sua extensão para .ZIP e descompactá-lo, assim como fez com o .APK.

Dentro da pasta que foi originada a partir do JAR, temos a estrutura de diretórios do projeto, mas agora no modelo Java tradicional. Mas ainda não chegamos onde queremos, pois foram gerados os arquivos .class, também conhecidos como Java bytecodes, que não podem ser lidos por humanos, apenas pela JVM. Então o próximo passo é convertermos os arquivos .class para as classes tradicionais .JAVA, em texto puro. Para isso, iremos precisar de um outro programinha, o JD-GUI (ou Java Decompiler, deste site). Com esse programinha, basta abrir os arquivos binários do Java que ele lhe mostrará o código fonte que originou aquele arquivo. E voilá, temos o código fonte de uma app Android que estava instalada em seu celular. Fácil, não?!

Como fazer Engenharia Reversa no Banco de Dados SQLite de um app

Mas e se o aplicativo possui um banco de dados? Você também não gostaria de ter acesso ao mesmo, para entender melhor a aplicação? Ou para ler seus dados? Pois bem, o próprio Titanium Backup também faz backup do banco de dados da aplicação, que ele coloca dentro de uma pasta data na pasta do backup. Lá dentro você terá um arquivo com a extensão .db que nada mais é do que a base de dados SQLite usada pelo aplicativo. Para abri-la, recomendo (sim, outro programinha) chamado SQLite Manager (ele é um plugin para Firefox, que pode ser baixado neste site). Ele é um plugin para Firefox que fica no menu de ferramentas do browser. Com ele, você pode abrir arquivos .db selecionando-os no menu de abrir arquivo. Com isso, você verá todas as tabelas e dados do banco de dados, inclusive podendo executar queries sobre o banco. Bacana, não?!

Conclusões

O processo é longo mas é bem simples. Basicamente utilizamos uma série de programinhas, cada um com sua utilidade, para ter acesso final ao código-fonte (e dados) de uma aplicação Android. O processo é fortemente documentado na Internet e em livros e é possível graças à própria arquitetura do Java e do Android, que permitem esse tipo de decompilação. Apesar disso, as práticas de rooting, backup de apps e decompilação de DEX e CLASS não é bem vista pelos fabricantes de smartphones, operadoras de telefonia e desenvovledores do SO Android. Além disso, o uso de tais técnicas, dependendo do seu propósito e do que fizer depois que tiver os fontes em mãos, pode ser considerado um crime, indo desde plágio, infração do contrato com a Google Play ou até espionagem industrial, então tome cuidado.

Um bom uso destas técnicas, por exemplo, seria ter acesso ao código fonte de um app seu que você perdeu o projeto original. Eu mesmo já fiz isso uma vez. Outro uso aceitável é verificar se sua aplicação é resistente à engenharia reversa (em breve gostaria de postar a respeito de técnicas quanto a isso), tentando fazer esse processo com um aplicativo seu e vendo se alguém conseguiria ler os seus fontes (a dica aqui é ofuscação, leiam sobre isso). E por último, um uso não tão legal (do ponto de vista da lei) mas que pode lhe ser muito útil é entender como um recurso específico de um aplicativo foi feito, ou seja, usar para aprender a desenvolver melhor, mas nunca copiar!

Compartilhar usando :

DEIXE SEU COMENTARIO :

Comentarios - Mundo Hacker | Facebook-copyright(™ © ®)