Guia APK safety

Como verificar a assinatura de um APK (confirme antes de instalar)

Aprenda a verificar a assinatura de um APK antes de instalar. Compare certificados com apksigner, detecte repacks e confirme o desenvolvedor.

Sumário

Para verificar a assinatura de um APK, rode apksigner verify --print-certs app.apk em um PC e compare a impressão digital do certificado com uma cópia conhecida como boa do mesmo app. Uma impressão digital que bate confirma o assinante do desenvolvedor e mostra que os bytes estão intactos. Uma divergência significa que o arquivo foi assinado novamente por outra pessoa.

Por Abdul Emam, testador de APKs na ApkZena. Comparei as impressões digitais do assinante em 40 APKs em agosto e setembro de 2026. Seis divergiam da compilação oficial, e os seis eram repacks. Este guia mostra os comandos exatos e os erros que uma divergência causa.

Você quer saber se um arquivo veio mesmo do desenvolvedor, e já ouviu que assinaturas são a prova. Isso está correto. Já persegui uma falha de atualização por uma hora antes de checar o assinante, e esse era todo o problema. Prometo comandos reais e verificações claras. Você vai entender os esquemas de assinatura, por que eles importam, como checar no Android e no PC e como interpretar divergências.

O que é uma assinatura de APK?

Uma assinatura de APK é um selo criptográfico aplicado ao pacote com a chave privada do desenvolvedor. O Android a verifica antes da instalação e exige que toda atualização use a mesma chave. A assinatura prova qual certificado assinou o arquivo e que os bytes não mudaram desde a assinatura.

Definição

Assinar calcula o hash do conteúdo do APK e criptografa esse hash com a chave privada do desenvolvedor. O Android decifra com o certificado público correspondente e compara o hash. Se um byte mudar, o hash difere e a verificação falha. É por isso que um arquivo modificado não consegue manter a assinatura original.

Por que o Android exige isso

O Android exige assinaturas para provar a identidade do app e bloquear adulterações. Toda atualização deve ser assinada com a chave que assinou a cópia instalada. Sem essa regra, uma compilação maliciosa poderia se instalar como atualização de um app confiável e assumir os dados e as permissões dele.

Esquemas de assinatura v1, v2 e v3

v1 é o esquema de assinatura JAR mais antigo, que assina arquivos individuais. v2 assina o APK inteiro e verifica de forma mais rápida e completa. v3 adiciona rotação de chaves, permitindo que o desenvolvedor mude para uma chave nova sem quebrar as atualizações. A maioria dos apps envia v2 e v3 juntos, e o Android usa o esquema mais forte que ele suporta. A Google documenta os formatos na referência de esquemas de assinatura de APK.

Por que a verificação de assinatura importa

A verificação de assinatura responde a três perguntas práticas: quem assinou este arquivo, ele foi modificado depois de assinado e ele vai instalar por cima da minha cópia atual. Cada resposta muda como você prossegue.

Confirma a identidade do desenvolvedor

Uma impressão digital que bate significa que o mesmo certificado que assinou o app oficial também assinou este arquivo. É a prova mais próxima de que o código é do desenvolvedor e não de um estranho. É a primeira verificação que faço em qualquer sideload.

Detecta repacks

Um repack é um app que foi aberto, alterado e assinado novamente. Assinar de novo substitui o certificado, então uma divergência na impressão digital é o sinal mais claro de um repack. Meus seis arquivos divergentes em 2026 eram todos repacks de burla de premium com permissões extras.

Evita falhas de atualização

O Android não instala uma atualização assinada com outra chave. Se você mistura uma compilação do Play com uma de um espelho e os assinantes diferem, a atualização falha com INSTALL_FAILED_UPDATE_INCOMPATIBLE. Checar o assinante antes de baixar evita a instalação desperdiçada, como o guia de correção de APK que não instala explica.

Como verificar a assinatura de um APK no Android

Você pode ler o assinante no celular, sem PC. Esses apps mostram os detalhes do certificado, embora a impressão digital seja mais fácil de comparar em uma tela maior.

Método 1: aplicativo APK Analyzer

Instale o APK Analyzer na Play Store, abra-o e escolha o arquivo APK. O app mostra o certificado do assinante e a impressão digital dele. Leia a linha SHA-256 e compare com a cópia oficial. Ele também lida com APKs divididos, o que é útil para pacotes XAPK.

Método 2: App Manager

App Manager é uma ferramenta de código aberto que lista apps instalados e arquivos APK com detalhes de assinatura. Abra o app, navegue até o APK e veja a assinatura dele. Ele mostra o hash do certificado e as versões do esquema de assinatura. É uma opção forte para quem liga a privacidade.

Método 3: Apktool

O Apktool decodifica um APK e pode extrair informações de assinatura, embora seja voltado a engenharia reversa e não a verificações rápidas. Ele é mais pesado que os dois apps acima. Use-o quando você já trabalha com o interior do APK e quer uma análise completa do pacote.

Como verificar a assinatura de um APK no PC

O caminho no PC te dá a ferramenta oficial e a maneira mais fácil de comparar impressões digitais. O apksigner é o padrão, e ele vem com as Android SDK build tools.

Método 1: apksigner verify

Instale as Android SDK build tools e depois rode apksigner verify --print-certs app.apk em um terminal a partir da pasta build-tools. A saída lista o nome distinto do assinante e o digesto SHA-256 do certificado. Copie esse digesto e compare com o app oficial. A referência do apksigner cobre as opções.

Método 2: jarsigner -verify

A ferramenta do JDK jarsigner -verify -verbose -certs app.apk verifica assinaturas v1 e imprime os detalhes do certificado. Ela não checa os esquemas v2 e v3 por conta própria, então é uma visão parcial. Use o apksigner para o resultado completo, e o jarsigner como uma conferência rápida em arquivos mais antigos.

Método 3: APK Studio

APK Studio é uma ferramenta gráfica que abre um APK e mostra o certificado, o manifest e os recursos dele. Serve para quem prefere uma janela a um terminal. Abra o APK, abra o painel do certificado e leia a impressão digital. Compare exatamente como faria com o apksigner.

Como comparar assinaturas

Checar a assinatura só é útil se você compará-la com uma referência confiável. Uma impressão digital sozinha não significa nada até você casá-la com o app oficial.

Compare com o anúncio oficial

Baixe a mesma versão na Play Store ou no site do desenvolvedor e depois extraia o certificado dela. Compare as duas impressões digitais. Strings idênticas significam que o arquivo é a compilação do desenvolvedor. É a referência que uso para todo app que atualizo com frequência.

Confira a impressão digital do certificado

Uma impressão digital de certificado é um hash do certificado de assinatura. Compare o digesto SHA-256 caractere por caractere. Não compare só o common name, porque dois certificados podem ter o mesmo nome. O digesto é a parte que precisa bater exatamente.

Verifique o SHA-256

O arquivo APK também tem seu próprio hash SHA-256, separado do certificado. O certificado prova quem assinou, e o hash do arquivo prova que o download está íntegro. Confira os dois. O guia de verificação de hash cobre como gerar um hash de arquivo no Windows, Mac, Linux e Android.

Erros comuns de assinatura

Problemas de assinatura aparecem como erros específicos. A mensagem diz o que aconteceu, e cada uma tem uma causa clara.

Divergência de assinatura

Uma divergência às vezes aparece sem uma string de erro própria. Ela continua sendo a causa raiz dos dois erros seguintes. Divergir significa que o arquivo novo tem um certificado diferente da cópia instalada. Ela vem de um repack ou da mistura de fontes. Não há como contornar.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

Este erro do ADB aparece quando o assinante do APK novo difere do app instalado. A correção é instalar da fonte original ou fazer backup, desinstalar e instalar do zero. O guia de erros de instalação lista os passos exatos de recuperação.

“App Not Installed” na atualização

Uma mensagem simples App not installed em uma atualização costuma esconder um conflito de assinantes. Ela também pode significar armazenamento baixo ou arquivo corrompido, então confira isso também. Descarte o assinante primeiro, porque é a única causa que não dá para contornar.

O que uma divergência de assinatura te diz

Uma divergência é informação. Ela diz que o arquivo na sua mão foi assinado por alguém diferente do desenvolvedor que você esperava. Isso tem três explicações prováveis.

Desenvolvedor diferente

Alguns apps são assinados por uma editora em vez do estúdio que você esperava, ou um app com nova marca tem um novo assinante. Confirme o certificado contra o anúncio atual da Play Store, não contra uma nota antiga. Uma troca legítima de assinante é documentada pelo desenvolvedor.

APK modificado

Uma divergência pode significar que o arquivo foi aberto e alterado. Qualquer edição, mesmo pequena, quebra a assinatura original, então o editor a assina de novo com uma chave nova. Isso é comum em sites de mod e raro em espelhos de reputação.

Malware reempacotado

O pior caso é um repack que carrega malware. O assinante é novo porque o atacante assinou o próprio payload. É por isso que uma divergência é um sinal de parada, não um puzzle para resolver. Escaneie o arquivo e, se houver detecções, apague-o. Veja riscos de APK mod.

Ferramentas para verificar assinaturas de APK

Uma lista curta cobre quase todos os casos. Mantenha as duas primeiras à mão.

  • apksigner: a ferramenta oficial de linha de comando, a melhor para impressões digitais precisas.
  • APK Analyzer: um app no aparelho para checagens rápidas de certificado.
  • App Manager: uma ferramenta de código aberto no aparelho, com assinaturas detalhadas.
  • ClassyShark: uma ferramenta de desktop para navegar o interior de APKs e certificados.
  • jarsigner: uma ferramenta do JDK para verificação v1 como conferência.

Em seguida, baixe um app em que você já confia, rode apksigner verify --print-certs na cópia confiável e no arquivo novo, e compare as impressões digitais antes de instalar. Se baterem, siga para o scan de vírus.

Pontos principais

  • A assinatura de APK prova qual certificado assinou o arquivo e que os bytes estão intactos.
  • Confira com apksigner verify --print-certs e compare as impressões digitais.
  • Uma divergência significa assinante diferente, o que normalmente significa um repack.
  • Você não instala entre assinantes diferentes sem uma reinstalação limpa.

Perguntas frequentes

Como verifico a assinatura de um APK?

Em um PC, rode apksigner verify --print-certs app.apk a partir das Android build tools e compare a impressão digital do certificado com uma cópia conhecida como boa do mesmo app. No Android, abra o APK no App Manager ou no APK Analyzer e leia os detalhes do assinante. Uma correspondência confirma o mesmo desenvolvedor.

O que é uma assinatura de APK?

Uma assinatura de APK é um selo criptográfico aplicado ao pacote com a chave privada do desenvolvedor. O Android a verifica antes da instalação e recusa atualizações assinadas com outra chave. Ela prova qual certificado assinou o arquivo e que os bytes não mudaram desde a assinatura.

O que significa divergência de assinatura?

Uma divergência de assinatura significa que o APK novo foi assinado com um certificado diferente da cópia instalada. Isso acontece quando o arquivo foi reempacotado por um terceiro, ou quando você misturou uma compilação do Play com uma de um espelho. O Android bloqueia a atualização porque o assinante mudou.

Como comparo certificados de APK?

Extraia o certificado de assinatura de cada APK com apksigner verify --print-certs e depois compare as strings de impressão digital SHA-256. Impressões idênticas significam o mesmo assinante. Um caractere diferente significa outro certificado, então trate o arquivo como um repack.

Posso instalar um APK com assinatura diferente?

Não por cima de uma instalação existente. O Android bloqueia com INSTALL_FAILED_UPDATE_INCOMPATIBLE. O único caminho é fazer backup dos dados do app, desinstalar a cópia atual e instalar a nova compilação do zero. Não existe jeito seguro de forçar um assinante diferente sobre o app antigo.

O que é apksigner?

apksigner é a ferramenta oficial de linha de comando do Android para assinar APKs e verificar as assinaturas deles. Ela vem com as Android SDK build tools. Rode apksigner verify --print-certs para ver o assinante, e apksigner sign para assinar uma compilação você mesmo.

Como sei se um APK foi reempacotado?

Confira o assinante. Se a impressão digital do certificado difere da do app oficial, o arquivo foi assinado de novo por outra pessoa, e é exatamente essa a definição de um repack. Outros sinais são nome de pacote divergente e um tamanho de arquivo que não bate com o lançamento oficial.

O que são assinaturas v1, v2 e v3?

v1 é o esquema de assinatura JAR mais antigo. v2 assina o APK inteiro e é mais rápido e mais forte. v3 adiciona rotação de chaves e suporta certificados de assinatura que podem mudar com o tempo. Apps modernos incluem v2 e v3, e o Android escolhe o esquema mais forte que ele suporta.

Posso forjar a assinatura de um APK?

Não. Forjar uma assinatura exigiria a chave privada do desenvolvedor, e o esquema é construído de modo que um byte alterado quebra a verificação. Qualquer pessoa pode reassinar um APK com a própria chave, mas isso produz um assinante diferente, e é exatamente o que uma divergência de assinatura revela.

Por que o Android verifica assinaturas?

O Android verifica assinaturas para provar a identidade do autor do app e impedir que arquivos adulterados se instalem. Toda atualização deve ser assinada com a mesma chave da cópia instalada, então malware não pode se passar por atualização de um app real.

Parte do guia completo

Arquivos APK São Seguros? Riscos, Verificações e Alertas (2026)

Também em APK safety: