MASTG-TECH-0013: Engenharia Reversa de Aplicativos Android
A abertura do Android o torna um ambiente favorável para engenheiros reversos, oferecendo grandes vantagens que não estão disponíveis no iOS. Como o Android é de código aberto, você pode estudar seu código-fonte no Android Open Source Project (AOSP) e modificar o sistema operacional e suas ferramentas padrão da maneira que desejar. Mesmo em dispositivos comerciais padrão, é possível fazer coisas como ativar o modo de desenvolvedor e instalar aplicativos lateralmente (sideloading) sem grandes obstáculos. Desde as poderosas ferramentas incluídas no SDK até a ampla gama de ferramentas de engenharia reversa disponíveis, há muitas facilidades para tornar sua vida mais fácil.
No entanto, também existem alguns desafios específicos do Android. Por exemplo, você precisará lidar tanto com bytecode Java quanto com código nativo. A Java Native Interface (JNI) às vezes é usada deliberadamente para confundir engenheiros reversos (para ser justo, existem razões legítimas para usar JNI, como melhorar o desempenho ou dar suporte a código legado). Os desenvolvedores às vezes usam a camada nativa para "ocultar" dados e funcionalidades, e podem estruturar seus aplicativos de forma que a execução salte frequentemente entre as duas camadas.
Você precisará de pelo menos um conhecimento prático tanto do ambiente Android baseado em Java quanto do sistema operacional Linux e do Kernel, nos quais o Android se baseia. Você também precisará do conjunto de ferramentas certo para lidar tanto com o bytecode executado na máquina virtual Java quanto com o código nativo.