· Aprenda a tecnologia de análise reversa, entenda os princípios de análise estática e análise dinâmica da plataforma Android;
· Através da análise reversa da plataforma Android do combate real, aprofundar o entendimento do uso do AndroidKiller, GDA e outras ferramentas;
· Compreender o conceito de quebra de análise estática do Android;
· Dominar as noções básicas da plataforma Android, tais como: a arquitetura do sistema, componentes, Binder mecanismo, Intend mecanismo, smali gramática.
Experiência: use a ferramenta de análise estática do Android para analisar o arquivo AddNumber.apk e encontrar o sinalizador.
Este sistema operacional do computador: Win10
Emulador Android: Night God Simulator
Versão JDK: jdk-1.8.0 e jdk-14 estão instalados nesta máquina; o caminho da configuração da variável de ambiente deve ser modificado para o anterior
Ferramentas de análise: AndroidKiller_v1.3, GDA3.68 (ambas são ferramentas abrangentes de análise do APK, pacote de entendimento integrado,
Descompilação, reembalagem e outras funções)
Experiência: use a ferramenta de análise estática do Android para analisar o arquivo AddNumber.apk e encontrar o sinalizador.
Abra o emulador do Android e tente instalar a versão inicial APK, erro 1007: Falha na instalação do aplicativo.
Isso pode ocorrer porque o arquivo APK está danificado, não possui uma assinatura, tem um problema com o método de empacotamento ou o fabricante do aplicativo / jogo não torna o emulador compatível quando sai com o pacote de instalação.
Figura 1 Falha na instalação inicial do APK
Abra o AndroidKiller e carregue o AddNumber.apk para extrair e descompilar o código fonte:
Figura 2 Código-fonte extraído com sucesso e descompilado
Tente recompilar diretamente o arquivo apk, sugerindo que o APK não foi compilado e não pode continuar assinando a próxima etapa:
Figura 3 Falha ao compilar o APK original
Use a ferramenta GDA para visualizar o APK, depois de carregá-lo da seguinte maneira:
Figura 4 O GDA carrega o arquivo APK original
( Nota adicional: A interface principal exibe o cabeçalho Dex em cores diferentes, e a coluna direita de cima para baixo significa: 1. Exibir todos os caracteres
String; 2. Ver todas as strings usadas; 3 Ver todas as APIs; 4. Visualizar arquivos AndroidManifest; 5. Navegação hexadecimal
Transações; 6 suspeito (análise do comportamento malicioso); 7 classe e método, se uma pluralidade de DexClass ocorre APK denota mulitdex tecnologia empregue :. )
Clique no botão Visualizar assinatura na barra de opções para visualizar as informações de assinatura do APK e descobrir que o conteúdo está vazio; portanto, o motivo pelo qual o APK não pode ser instalado com sucesso no simulador e não pode ser recompilado deve ser sem sinal:
Figura 5 Use o GDA para visualizar a assinatura do APK original
Use o AndroidKiller para assinar o arquivo original, os métodos de assinatura aqui são Padrão e o AndroidKiller, tentei os dois e descobri que apenas o último pode ser bem-sucedido:
Figura 6 AndroidKiller o original APK assinatura
Use o GDA novamente para visualizar o arquivo recém-gerado após a assinatura e verifique as informações de assinatura do APK.O seguinte conteúdo aparece:
Figura 7 Use o GDA para visualizar o novo APK assinado
Instale o arquivo APK recém-gerado após fazer login no emulador Android e instale-o com êxito. Ao mesmo tempo, podemos descobrir que o link inicial é um nível cumulativo. Obviamente, não é realista clicar manualmente no nível:
Figura 8 A primeira interface do programa após a instalação do APK com sucesso
Use o AndroidKiller para visualizar os arquivos na pasta smali e, na descompilação do Java, localize o arquivo MainActivity.class para entender as principais funções.
Figura 9 Use o AndroidKiller para visualizar MainActivity.class
Observando o conteúdo da seção da função de monitoramento de cliques, podemos ver que toda vez que o botão é clicado, meu número aumenta em um e, quando o número atual é maior que um determinado valor, ele sai do loop e usa a exibição Intent (intent, descrevendo as ações do aplicativo e seus dados correspondentes ; Desempenhar o papel de transportadora de comunicação)) para iniciar succcess.class;
Figura 10 Exibir o conteúdo da função de monitoramento
De acordo com o conteúdo do APK no simulador, o número de configurações é relativamente grande e a eficiência do clique manual é muito baixa; portanto, devemos primeiro sair do ciclo de clicar no botão. Localize a sentença de julgamento da condição no arquivo smali correspondente, localize o julgamento de pular para fora do loop e modifique a lógica de julgamento para permitir saltar para fora do loop depois de clicar uma vez.
Figura 11: Instrução de sentença no arquivo smali
(se-eq igual a (igual); -não é igual a (não igual); -gt maior que (maior que); -ge maior que ou igual a; -lt menor que (menor que); -le menor que ou igual a)
Após a modificação, clique em compilar.Depois que a compilação for bem-sucedida, instale o arquivo apk recém-compilado no emulador Android e obtenha o prompt:
Figura 12 interface de prompt após pular fora do loop
Tente voltar à página anterior e obtenha o True Flag: 0218d33b334a0a15260d149db58a6e50:
Figura 13 obter sinalizador
Você pode verificar a lógica da operação correspondente a success.class, que pode corresponder à operação de obtenção do sinalizador. Após sair do loop, o programa executa primeiro a função onCreate para ir para a nova página.O sinalizador aparecerá apenas depois que o usuário clicar para retornar à página anterior:
Figura 14 Análise lógica operacional da success.class
1. Antes de recompilar, preste atenção para verificar se a versão do APK é consistente com o JDK nativo.Se eles forem inconsistentes, talvez não seja compilado;
2. A ideia geral da análise estática e do cracking do Android é a seguinte:
· Use e observe após instalar o apk;
· Use a ferramenta para descompilar o apk, entender a lógica do programa principal, verificar o significado das palavras-chave e localizar o arquivo smali correspondente;
· Encontre o conteúdo principal, como instruções de julgamento lógico e saltos no arquivo smali correspondente, e modifique a lógica manualmente após analisar o código para controlar as instruções que queremos executar;
· Salve e compile após a conclusão e execute o aplicativo de aplicativo rachado para verificar se é bem-sucedido.
3. Contra os métodos de análise estática do Android:
Use a tecnologia de ofuscação de código, por exemplo, o Google fornece a ferramenta de ofuscação de código ProGuard, os desenvolvedores podem ofuscar seu próprio código;
· Embalagem, que atualmente está no mercado com criptografia de amor, 360 conchas;
· Detecção de depuração, como função de detecção de depuração Android, detecção de porta de depuração IDA, etc.