Skip to content

Instantly share code, notes, and snippets.

@jlcarvalho
Last active April 8, 2021 14:28
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jlcarvalho/e865f2dbe96135815eb7ec3fd1283ded to your computer and use it in GitHub Desktop.
Save jlcarvalho/e865f2dbe96135815eb7ec3fd1283ded to your computer and use it in GitHub Desktop.

Algum tempo atrás eu publiquei um artigo que ensinava como desempacotar aplicativos da Google Play para auxiliar no aprendizado através de engenharia reversa. No artigo eu busquei deixar claro que o objetivo era fazer com que "mais pessoas sejam capazes de otimizar seus aplicativos através das descobertas proporcionadas pela técnica".

E muita gente entendeu isso, mas ainda assim rolou bastante polêmica. Muita gente acredita que esse tipo de conhecimento não pode ser propagado. Talvez por medo ou algo do tipo. A questão é que eu acredito que só através do conhecimento nós seremos capazes de melhorar nossos aplicativos. Inclusive a engenharia reversa pode nos ajudar em diversas áreas, como segurança, performance, tooling, usabilidade, etc.

Enfim, eu poderia me estender mais, falando das questões éticas e morais do tema, mas já fiz isso no meu artigo anterior então vamos ao que interessa.

Espiando os aplicativos

É importante ressaltar que para realizar os passos a seguir é necessário possuir um Mac e um dispositivo com iOS (iPhone, iPad ou iPod).

Novamente nós usaremos o meu aplicativo Mini Receitas como exemplo, já que eu não quero problemas com ninguém.

  • No seu Mac, abra o iTunes e pesquise pelo aplicativo "Mini Receitas";
  • Mande instalar no seu dispositivo;
  • E então, ainda no iTunes, clique em "Apps";
  • Selecione o aplicativo que você quer desempacotar (no nosso caso o Mini Receitas), clique com o botão direito nele e selecione "Show in Finder";
  • Você verá um arquivo com a extensão .ipa no Finder, faça uma cópia desse arquivo para o desktop;
  • Altere a extensão de .ipa para .zip (nesse caso, MiniReceitas.ipa para MiniReceitas.zip), ignore o aviso e confirme a alteração da extensão para .zip;
  • Agora dê um duplo clique no arquivo .zip e extraia seu conteúdo;
  • No diretório recém criado abra a pasta "Payload";
  • Clique com o botão direito no nome do aplicativo (MiniReceitas.app) e seleciona "Show Package Contents";
  • Pronto. Agora você já pode explorar o conteúdo do MiniRecitas.

Você pode e provavelmente vai encontrar um monte de coisas interessantes ao realizar esse processo em alguns aplicativos. Note que nas versões mais recentes do iTunes, a sessão "Apps~ é uma subsessão acessível através do menu do iTunes.

Apps in iTunes

Uma coisa que você vai notar é que todo o javascript do aplicativo é minificado. Por padrão o Ionic 2 já faz diversas otimizações no seu código para que ele tenha um menor tamanho e execute mais rápido. Dentre essas otimizações estão a minificação, o tree-shaking, a ofuscação, a compilação angular, etc.. Embora nenhuma dessas otimizações garantam a segurança do seu aplicativo, algumas delas ajudam a deixar o código mais difícil de ler para quem está desempacotando o aplicativo.

Até por que isso é uma questão muito mais relacionada com direitos autorais do que com segurança em si. Como essa resposta no Stack Overflow pontua, a não ser que você possua algum tipo de conteúdo/código/algoritmo proprietário no seu aplicativo, você não deve se preocupar com alguém espiando os seus arquivos. Inclusive, como eu citei no meu artigo anterior, também é possível realizar engenharia reversa em aplicativos nativos e existem diversas ferramentas por aí com esse propósito (Apktool, Hopper, etc.).

Portanto se você está preocupado com a segurança do seu aplicativo é melhor focar em outros aspectos e esses links podem te ajudar nisso:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment