image

Access unlimited bootcamps and 650+ courses forever

75
%OFF
Article image
Alice Santos
Alice Santos19/11/2025 00:15
Share

O Dia em que o Android Ficou Vulnerável: Dalvik, Certificados e o Ataque que Mudou Tudo

    Nos primeiros anos do Android, o sistema operacional precisava lidar com uma limitação extrema de hardware. Os dispositivos móveis estavam apenas começando a se popularizar e vinham com pouquíssima RAM — algo entre 128 e 512 MB — além de armazenamento lento e baterias fracas. Hoje isso parece absurdo, já que muita gente só considera comprar um PC se tiver no mínimo 16 GB de RAM. Mas, naquela época, o Android precisava se adaptar ao que a tecnologia permitia.

    É nesse contexto que surge a Dalvik Virtual Machine (DVM), responsável por interpretar e executar o código dos apps no formato DEX. Esse bytecode era compacto, economizava RAM e ocupava pouco espaço. Além disso, a adoção da Dalvik foi estratégica: a Google queria evitar depender da Oracle e da JVM por causa de disputas judiciais envolvendo propriedade intelectual (isso rende outro artigo!).

    A Dalvik tinha um papel fundamental. Ela isolava processos e permitia múltiplos apps rodando ao mesmo tempo — crucial em um ecossistema mobile que nasceu multitarefa (pense na quantidade de apps que você abre e fecha no seu celular ao longo do dia). Cada app rodava em sua própria instância da VM, impedindo que um invadisse o espaço de memória do outro.

    Mas o modelo Dalvik tinha uma peculiaridade importante. Durante a instalação, o Android extraía o DEX contido no APK e gerava um arquivo otimizado chamado ODEX, usado para acelerar o tempo de execução. Isso reduzia o tempo de inicialização dos apps e economizava CPU. Ou seja: o APK era a base, e o ODEX era a versão “otimizada” para rodar.

    E é exatamente aí que mora o problema.

    Todo aplicativo mobile é assinado com um certificado — uma assinatura digital baseada em criptografia que confirma quem desenvolveu o app e garante que ele não foi modificado após sair das mãos do desenvolvedor.

    Se alguém mal-intencionado altera o APK, insere código malicioso ou modifica recursos, o certificado não corresponde e o app simplesmente não é instalado.

    Mas o que isso tem a ver com a nossa querida Dalvik Virtual Machine?

    Tudo!

    Na Dalvik, o certificado era verificado apenas no APK, durante o processo de instalação. O arquivo ODEX — exatamente aquele que era executado quando o usuário abria o app — não passava por verificação de assinatura.

    O resultado? A Dalvik permitia que classes carregadas a partir desses arquivos não verificados recebessem permissões privilegiadas. Apps maliciosos podiam se passar por apps legítimos, herdando permissões de serviços confiáveis. Um prato cheio para ataques como o famoso Fake ID.

    Viu que problemão?

    Por isso, em 2014, a Dalvik foi oficialmente substituída pelo ART — Android Runtime — no lançamento do Android 5.0 Lollipop.

    O ART mudou tudo: ele compila o app no momento da instalação, transformando o bytecode DEX em código nativo. Isso gera arquivos otimizados mais seguros, inclui validações profundas de bytecode, protege contra classes falsas e oferece execução mais isolada. Apps passam a abrir mais rápido, com menos travamentos — e com muito mais segurança.

    Claro que, na época da transição, isso trouxe desvantagens: o tempo de instalação aumentou, atualizações ficaram mais lentas, e o consumo de armazenamento cresceu. Mas o avanço constante do hardware — e hoje vemos smartphones topo de linha com 12 ou até 16 GB de RAM — tornou essa abordagem totalmente viável.

    Existem, atualmente, estratégias ainda mais modernas para otimizar build, instalação e execução, mas vou encerrar o artigo por aqui. Obrigada pela atenção!

    Se quiser se aprofundar, recomendo os livros Android Internals – A Confectioner’s Cookbook (Jonathan Levin) e Android Security Internals (Nikolay Elenkov).

    Até mais!

    Share
    Recommended for you
    CI&T - Backend com Java & AWS
    CAIXA - Inteligência Artificial na Prática
    Binance - Blockchain Developer with Solidity 2025
    Comments (0)