Experiência em análise estática do Android - segurança de software de registro (1)

1. O objetivo do experimento

· 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.

2. Conteúdo experimental

Experiência: use a ferramenta de análise estática do Android para analisar o arquivo AddNumber.apk e encontrar o sinalizador.

3. Equipamento experimental

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)

4. Etapas experimentais

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

Cinco, questões que precisam de atenção
 

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.

Publicado 2 artigos originais · gostei 0 · visitas 549

Acho que você gosta

Origin blog.csdn.net/weixin_42056969/article/details/105541259
Recomendado
Clasificación